Java不會的11 介面 多型

2021-08-20 05:21:33 字數 1837 閱讀 2442

1.介面

(1)介面中的成員方法全是抽象的,不允許有普通方法

(2)定義抽象方法:固定格式

public abstract 返回值型別 方法名字(引數列表)  

(3)介面中抽象方法, 修飾符public 寫或者不寫,都是public 

固定只能用public 許可權

(4)介面中成員變數的定義:

要求:必須定義為常量,即使你的**是這樣寫的:public int a,底層語言也會預設加上public static final int a轉為常量。

固定格式:

public static final 資料型別 變數名  = 值

2.   介面中變數寫法注意:

//所以:

public static final (1)這些修飾符在介面中可以不寫,

(2)但是不寫不等於沒有。

(3)也可以選擇性書寫  比如只寫public

eg.public static final int x = 3;   --> int x = 3;

3.  介面中成員方法寫法注意:

(1)  public abstract 這些修飾符在介面中可以不寫,

(2)但是不寫不等於沒有。

(3)也可以選擇性書寫  比如只寫public

(4)繼承介面的類的方法,許可權必須帶public

eg。 clas aimpl implements b //public 必須帶

}4.  介面多實現,沒有安全隱患嗎?

多實現沒有安全隱患,原因在於介面中的方法全是抽象,沒有主體。

依賴實現類,重寫才可以執行,介面多實現中,沒有安全問題的。

5.  介面多實現,避免的錯誤舉例。

(1)c 實現ab,ab的抽象方法同名,同參,不同返回值。實現哪個都報錯

public class a

public class b

public class c implements a,b

person p = new student();

p.work()://呼叫的是子類student的方法

}(2)多型中成員變數:

編譯的時候,參考父類中有沒有這個變數,如果有,編譯成功,沒有編譯失敗!!!

執行的時候,執行的是父類中的變數值

public class zi extends fu{}

//fu f  new zi();

system.out.println(f,a);//輸出的變數是父類的變數a

(3)多型中的成員方法:

編譯的時候,參考父類中有沒有這個方法,如果有,編譯成功,沒有編譯失敗。

執行的時候,執行的是子類的重寫方法。

!!!理解上述:參考孔子裝爹案例。(網上搜)

10 instance of 關鍵字

eg.student extends person 

person p = new student;

boolean b = p instanceof student;//比較,p是不是student型別的物件,如果是,intanceof返回true。 

11. fu f = new zi();

//運算的兩個資料型別,是不同的。父類是父類型別,子類是子類型別。父類範圍大,子類範圍小,子類強制提公升為父類型別。簡稱向上轉型。

12.多型中成員訪問的特點分別是什麼?

在多型中

對於普通方法:

編譯時看左邊,執行時看右邊。

對於靜態方法:

編譯、執行都看左邊

對於成員變數:

編譯、執行看左邊

13.如果乙個方法的返回值型別是父類,那麼能否返回乙個子類物件?

可以,相當於自動型別提公升。

java筆記四 介面與多型

public inte ce swimmer介面中的方法沒有操作時,必須得公開且抽象,為了方便可以省略public abstract public inte ce swimmer物件若想擁有swimmer定義的行為,就必須操作介面 eg fish擁有swimmer行為 package openhom...

11 介面總結

定義介面的基本格式 外層的框架 public inte ce 介面名稱 常量 public static final 資料型別 常量名稱 資料值 抽象方法 public abstract 返回值型別 方法名稱 引數列表 沒有大括號 預設方法 public default 返回值型別 方法名稱 引數列...

JAVA學習之多型(三) 介面實現多型的應用

主機板使用介面,具體的卡實現介面。介面是特殊的類,其中的所有方法和常量有固定的格式。方法都是抽象的 public abstract void 常量 public static final int num 2 inte ce pci class mainboard public void usepci...