標籤:new 方法 this 它的 表示 oid 抽象類別 內容 錯誤
抽象類別
為什麼要引用抽象類別這種類:父類中有許多的方法沒有具體內容;而且子類中重寫父類的方法如果寫錯,不會提示錯誤;所有我們引用抽象類別來對子類加以限制,同時將父類中沒有具 體方法的方法,定義為抽象,可以更加簡潔。不需要再用{}來表示方法。
抽象類別和抽象方法:不知道具體內容的類和方法
抽象類別的定義:abstract class 類名{}
抽象方法的定義:abstract 傳回型別 方法名(形參);
怎麼引用抽象類別:抽象類別不能被直接new,但是可以調用它的衍生類別----當抽象類別有自己的衍生類別時可以直接調用衍生類別來實現調用抽象類別;當沒有衍生類別時,需要自己寫一個派生自這 個抽象類別的衍生類別,來變相調用這個抽象類別。
注意:抽象類別不能被直接new出來;抽象方法沒有函數體;抽象類別中可以沒有抽象方法,但是有抽象方法的類必定是抽象類別;抽象類別中可以包含成員變數、抽象方法、非抽象方法;抽 象類的衍生類別可以不實現抽象方法,但是引用的類必須要註明是抽象類別。
介面
介面可以理解為就是一個獨特的抽象類別,他只有常量和抽象方法
定義方法: interface 介面名 [extends 父介面列表]{
final 類型 常量名=值;
public void 方法名(形參);
}
介面的實現:
[abstract] class 類名 extends 父類 implements 介面列表{} //[]代表可以省略不寫
定義介面時要遵循介面分離原則,即介面實現的功能盡量的少,最好一個借口實現三個以下的功能;同時介面的介面名盡量是形容對象方法的形容詞。
注意:類是單繼承,而介面可以多個引用。
this:這個對象
super:父類
final:當修飾成員變數時,相當於常量
當修飾方法時,說明方法是終態方法,不可以進行重寫操作
當修飾類時,說明類是終態類(可以理解為最具體,不能再具體),不可以被繼承
例如之前做的貓叫同時驚醒了人、老鼠和另一隻貓:
建立三個介面分別為人、老鼠、貓,
分別給他們自己的行為方法,然後再建立一個貓叫的類來調用這三個介面
之後用main函數來調用貓叫函數 實現貓叫驚醒了人、老鼠和另一隻貓
抽象類別和介面