D0819 介面與多型

2021-10-23 22:20:34 字數 1850 閱讀 4501

介面中的方法全都是抽象方法,用來指定一些規則,讓子類去重寫。介面的作用主要體現在一下兩點

1.指定規則

2.利用這些規則給類做功能擴充套件

介面使用inte***ce關鍵字來定義,使用implements來實現。

//定義介面

public

inte***ce

inter

//實現介面

public

class

interimpl

implements

inter

}

1.介面中的成員變數,預設被 public

static

final 修飾

2.介面中的方法,預設被 public

abstract 修飾

3.介面中不能寫構造方法

jdk7以後對介面做了一些更新

jdk7: 介面中的方法全都是抽象方法,子類必須重寫

jdk8: 允許在介面中寫預設方法(被 public

default 修飾的方法),可選重寫

如果多個介面中有相同的預設方法,子類必須重寫

允許在介面中寫靜態方法(被 public

static 修飾),使用介面名調,可選重寫

jdk9: 允許在介面中寫私有方法 (被 private 修飾),只能在本介面中使用

介面中的方法可用的許可權修飾符只有 public , private 兩種,不寫會預設用 public , 雖然也有可能出現 default ,但其並不作為許可權修飾符使用,只是一種固定寫法

介面中的成員方法只能用 public 修飾,不寫會預設用 public

1.類與類的關係:只能單繼承

2.類與介面的關係:多實現關係

3.介面與介面關係:多繼承關係

子類在繼承父類的同時也可以實現介面

同乙個物件可以用多種資料型別(父類、介面)進行接收。

多型的前提

1.要有繼承、實現的關係

2.要有方法重寫

3.父類/介面接收子類物件

animal a=

newdog()

;//animal是dog的父類

usb u=

newmouse()

;//usb是mouse的介面

1.成員變數的訪問特點

編譯看左邊(父類),執行也看左邊(父類)

大白話:父類有就用父類的,父類沒有就報錯了

呼叫時需注意

public

class

test

}2.成員本方法的訪問特點

編譯看左邊(父類),執行看右邊(子類)

大白話:子類複寫父類方法,就執行子類的方法。

1.好處:提高了**的擴充套件性

把方法的引數寫成父類、介面,呼叫方法時可以傳遞任意的子類物件。

2.弊端:不能呼叫子類特有的方法 需要向下轉型後方可呼叫

1.向上轉型

animal a=

newdog()

;//多型的寫法,就是向上轉型

2.向下轉型

//判斷變數a具體是什麼型別

if(a instanceof

dog)

注意:多型的轉型並不是隨意的,它是乙個還原的動作。原本是什麼型別,才能轉換為什麼型別。

3.多型轉型可能會遇到的問題

classcastexception: 多型的轉型出現的問題,型別轉換錯了

java筆記四 介面與多型

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

PHP物件導向05 介面與多型

抽象類與介面 2014 9 2 9 14 32 摘要 1 抽象類 abstract 2 介面 inte ce 3 多型的應用 1 抽象類 abstract 特點 1 抽象類使用abstract關鍵字申明 2 抽象類中可以沒有抽象方法 3 任何乙個類,如果它裡面至少有乙個抽象方法,那麼這個類就必須被宣...

PHP物件導向05 介面與多型

抽象類與介面 2014 9 2 9 14 32 摘要 1 抽象類 abstract 2 介面 inte ce 3 多型的應用 1 抽象類 abstract 特點 1 抽象類使用abstract關鍵字申明 2 抽象類中可以沒有抽象方法 3 任何乙個類,如果它裡面至少有乙個抽象方法,那麼這個類就必須被宣...