介面,多型,內部類筆記

2021-06-14 11:04:55 字數 2495 閱讀 3699

介面型別的應用:用於介面指向型別的子類物件

packagecom.sdut.day2;

inte***ceusb

public

classbookpc

public

static

voiduseusb(usb u)

}classupanimplementsusb

public

voidclose() }

classmouseimplementsusb

public

voidclose() }

多型的好處:提高的了**的重用

多型的條件:子類要繼承父類或者實現介面,並且覆蓋父類後者介面中的方法

多型的弊端:父類的引用不能實現子類所特有的功能

轉型:向上轉型,向下轉型

向上轉型:animal a = new cat();限制特有的功能,實現**重用

向下轉型:cat c = (cat) a;可以使用特有的功能

型別判斷

public static voidmethod (animal a)

if(a instance of dog) }

通常在向下轉型前用於健壯性的判斷

多型:成員變數覆蓋只發生在函式不會發生在變數上

編譯時:參考引用型變數所屬類中是否有呼叫的成員變數,有則編譯通過,沒有則編譯失敗

執行時:參考引用型變數所屬類中是否有呼叫的成員變數,並執行該所屬類中的成員變數。

簡單說:編譯和執行都看等號左邊

成員函式(非靜態):當子類和父類有相同的方法,子類會覆蓋父類的方法

編譯時:參考引用型別變數所屬類中是否有呼叫的函式,有的話則編譯通過,沒有則編譯失敗

執行時:參考的是物件所屬的類中是否有呼叫函式。

簡單說:編譯看左邊,執行看右邊

靜態函式:

編譯時:參考引用型變數所屬類中是否有呼叫的靜態方法

執行時:參考引用型變數所屬類中是否有呼叫的靜態方法

簡單說:編譯和執行都看左邊

對於靜態方法:類可以直接呼叫,因為靜態方法在程式執行時,自動載入

abstract

classanimal

classcatextendsanimal

public

voidcatchmouse() }

classdogextendsanimal

public

voidlookhome() }

public

classduotai

public

static

voidmethod(animal animal)

內部類的優點:當外部類有私有屬性時,內部類可以直接訪問外部類的私有屬性和方法

外部類要訪問內部類必須建立該內部類的物件,通過物件來訪問該該內部類的成員。

內部類一般用於類的設計

分析事物時,發現該事物還有事物,而且這個事物還有訪問被描述事物的內容。這時候就是還有事物定義成內部類來描述

如果內部類是靜態的,相當於外部類other

.inner in =newother.inner();

如果內部類中方法是靜態的,該內部類必須是靜態的

為什麼內部類可以訪問外部類的成員呢?

那是因為內部類持有了外部類的引用,外部類名

.this

內部類在區域性位置上只能訪問區域性中本

final

修飾的區域性變數

classother }

public

voidmethod()

}public

classneibu

匿名內部類:

就是內部類的簡寫格式

new 父類或者介面

inte***ceinter

classouter

public

voidshow2() }

public

voidmethod()

public

voidshow2()

}.show1(); }

}

多型 介面 內部類

多型的機制問題,參考這篇博文,講的通俗易懂,大概為下 在建立子物件時,呼叫子類構造器前會呼叫父類構造器 即建立乙個子物件,這個子物件中隱含著乙個父物件。多型引用的指標指向的是子物件中的這個父物件,而父物件中的方法指標指向方法區的哪個方法,是根據建立的子物件的型別決定的,當你建立這個子物件時,該子物件...

繼承,多型,介面,內部類

package extend public class people public void setage int age public people public people int age public void show fianl關鍵字的作用 fianl修飾類 該類不能被繼承 不能有子類,...

0824學習筆記(多型 抽象類 介面 內部類)

同乙個物件不同時刻的不同形態。父類引用指向子類物件。優 提高了程式的擴充套件性。定義方法使用父型別為引數,使用時用具體的子型別參與操作。缺 不能使用子型別特有的功能。轉型 向上轉型 people p new student 父指向子,子轉父。抽象類 沒有方法體的方法是抽象方法。特點 抽象類的成員變數...