多型和內部類

2021-10-08 03:42:03 字數 2187 閱讀 6817

多型是繼封裝、繼承之後,物件導向的第三大特性。

定義:指同一行為具有多個不同的表現形式

前提

繼承或者實現【二選一】

2.方法的重寫【意義體現:不重寫,無意義】

3.父類引用指向子類物件【格式體現】

**父類型別 變數名 = new 子類物件;

變數名.方法名( );

fu fu =

newzi()

; animal a =

newcat()

;

當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;如果有,執行的是子類重寫後的方法。

->

父類 fu

package day10.demo2;

public

class

fuvoid

setage()

voidm1(

)}

子類 zi

package day10.demo2;

public

class

ziextends

fuvoidm2(

)}

主方法類main

package day10.demo2;

public

class

main

}

定義:多型本身是子類型別向父類型別向上轉換的過程,這個過程是預設的。當父類引用指向乙個子類物件時,便是向上轉型。

父型別引用 指向 子型別物件

父型別 a = new 子型別物件();

介面型別 a = new 實現類物件();

myinte***cea a = new myinte***ceaimpl()

object o = new myinte***ceaimpl()

父類型別向子類型別向下轉換的過程,這個過程是強制的。乙個已經向上轉型的子類物件,將父類引用轉為子類引用,可以使用強制型別轉換的格式,便是向下轉型。

轉型的異常

classcastexception: 型別轉換異常

解決方案: 轉換之前先判斷引用 實際上是不是要轉換的型別物件

引用a instanceof 子型別 => boolean

問 a 實際上是不是子型別物件

什麼是內部類?

將乙個類a定義在另乙個類b裡面,裡面的哪個類a就稱為內部類,b則稱為外部類。

種類: 成員內部類,靜態內部類,區域性內部類[匿名內部類]

成員內部類:定義在類中方法外的類。許可權 public,protected,(default),private

格式:

public

class

outer

}

使用:

內部類中, 可以隨意使用外部類成員

外部類中, 使用內部類成員時需要建立內部類物件

無關類中, 使用內部類成員

1.間接呼叫, 在外部類方法中呼叫內部類方法

main方法中, 呼叫外部類方法

2.直接呼叫, 需要建立內部類物件

外部類.內部類 a = new 外部類().new 內部類();

內部類和外部類有同名成員變數

外部類的成員變數: 外部類.this.變數

內部類的成員變數: this.變數

區域性內部類: 在方法內部定義類, 只在方法中有效

在區域性內部類中, 使用區域性變數, 必須是final的

jdk8 後, 區域性變數事實上沒有發生改變, 那麼final可以省略

一次性的類, 只能用一次

不能使用許可權修飾符

區域性內部類, 需要類只使用一次

匿名內部類是區域性內部類經過優化而來的。

匿名內部類: 繼承抽象類或實現介面

new

inte***cea()

匿名內部類, 只能用一次, new乙個物件

匿名物件, 只能使用一次, 只能呼叫一次方法

注意: 匿名內部類 和 匿名物件 不是一回事 ! ! !

Java 多型和內部類

多型是同乙個行為具有多個不同表現形式或形態的能力。多型就是同乙個介面,使用不同的例項而執行不同操作 比如 parentp newchild 當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤 如果有,再去呼叫子類的同名方法。多型的好處 可以使程式有良好的擴充套件,並可以對所有...

多型 介面 內部類

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

介面,多型,內部類筆記

介面型別的應用 用於介面指向型別的子類物件 packagecom.sdut.day2 inte ceusb public classbookpc public static voiduseusb usb u classupanimplementsusb public voidclose classm...