java基礎知識整理(8) 介面與多型

2021-09-05 07:02:24 字數 2746 閱讀 9708

介面是特殊的抽象類,所有的屬性都是公開靜態常量(全域性常量),所有的方法都是公開抽象方法而且沒有構造方法。

**介面是對外暴露的規則。

**介面是程式的功能擴充套件。

**介面的出現降低耦合性。

**介面可以用來多實現。

類與介面之間是實現關係,而且類可以繼承乙個類的同時實現多個介面。介面與介面之間可以有繼承關係。

類實現介面的時候,要麼全部實現介面中的方法,要麼類本身定義為抽象類。介面不能被例項化,所有成員有固定修飾符。

注意:

*如果介面預設的方法是public和abstract,可以省略不寫,但是類在實現介面時,不可省public

*如果介面的返回值不是void,那麼類實現該介面時,方法體中必須有return語句;

*如果介面的返回值是void,大括號內可以沒有語句。

*如果父類實現了某個介面,子類也自然實現了該介面。

a:抽象類只能單繼承,介面可以多實現。

b:抽象類中可以由非抽象方法。抽象類中可以定義變數和常量。介面中的方法都是抽象的。介面中只能有靜態常量。因為介面中的方法都有預設修飾符:public abstract;介面中的成員變數都有預設修飾符:public static final

c:抽象類中定義的是乙個體系的共性功能。介面中通常定義的物件中的擴充套件功能。

d:介面的出現避免了單繼承的侷限性。

e:抽象類被繼承表示的是:is a 的關係。叫做:xx是yy的一種。 介面被實現表示的是:like a 的關係。叫做:xx像yy一種。

學會分析什麼時候使用抽象類,什麼時候使用介面。

他們代表兩種不同的設計思想。

事物的多種形態。它分為靜態多型(過載)和動態多型(物件的多型)

體現:多型用在方法的引數上m(a a)可以用a的任何乙個子類物件作為引數。

多型用在方法的返回值上a m() m方法返回的可能是a的子類物件。

父類引用或者介面引用執行子類的物件。

前提:     a:類與類(介面)之間有繼承(實現)關係。

b:必須有重寫。

c:父類引用指向子類物件。

多型的成員特點:

a:成員變數

編譯看左邊,執行也看左邊。

編譯--參考的是引用型別變數所屬的類中是否有呼叫的成員變數,如果有,編譯通過,              如果沒有,編譯失敗。

執行--呼叫的也是引用型別變數所屬類中的成員變數。

b:成員方法-------依賴於物件

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

編譯--參考的是引用型別變數所屬的類中是否有呼叫的方法,如果有,編譯通過,             如果沒有,編譯失敗。

執行--呼叫的是物件所屬類中是否有呼叫的方法,如果有,執行子類自己的方法;如果沒有就呼叫父類的方法。   

函式有乙個覆蓋的特性。       

c:靜態方法------不依賴於物件

編譯看左邊,執行也看左邊。

編譯--參考的是引用型別變數所屬的類中是否有該方法,如果有,編譯通過,如果沒有,編譯失敗。

執行--呼叫的也是引用型別變數所屬類中的方法。

提高了**擴充套件性,便於後期可維護性。把不同的子類物件都看成是父類的物件,遮蔽子類差異,使得程式更加通用。

只能使用子類中和父類中同名的方法。對於子類特有的方法使用不了。

多型可以指揮同種型別一批物件做事情。使我們複雜的問題簡單化了。

帶士兵打仗,下課吃飯。

對程式進行擴充套件,或者限定對物件的方法操作時,使用向上轉型。當要使用子類的特有方法時,需要向下轉型(要做健壯性的判斷)

向上轉型和向下轉型需要注意的問題。進去是什麼,出來還得是什麼。

animal a = new  dog();  向上轉型  -------把dog提公升為animal。

a.eat();  向下轉型 --------呼叫的是dog的方法。

classcastexception:在進行子類特有方法使用時,要進行向下轉型,轉型前一定要做判斷,否則容易發生次異常。增強程式的健壯性!

它是乙個比較運算子,返回值型別為boolean。

對引用作強制型別轉換,可以用instanceof判斷是否相容,從而避免型別轉換異常。

if( a instanceof dog)

C 基礎知識整理 基礎知識(8) 介面

前面接觸了抽象類,它的特點是子類必須實現abstract修飾的方法。以及還有virtual修飾的方法,virtual修飾的方法子類可以重寫也可以不重寫而直接使用。但是由於c 也是單繼承的,所以定義乙個父類,然後繼承來擴充套件一些類的時候,會遇到不合適的情況。因為我們程式設計師是用程式語言來描述世界的...

typescript基礎知識(四)介面

在我的理解中,介面是用於對一系列方法 屬性定義一些標準化的內容,在typescript中體現為對型別的標準化,使用inte ce關鍵字來定義乙個介面 屬性介面針對於物件的屬性標準化 inte ce information function person info information void,a...

Java基礎09 3 介面

概述 因此,產生了介面,用於形容一類事物特有的 技能 哪一類事物擁有該技能,就可以繼承該介面。特點 介面用關鍵字inte ce表示 類實現介面用implements表示 介面不能直接例項化,但是可以通過多型的形式對其進行間接例項化!介面的子類 定義乙個介面,裡面是跳高的功能 inte ce jump...