JAVA SE簡書 繼承

2021-09-17 20:03:46 字數 2288 閱讀 2979

/**所有的class的頂級父類均為jdk中的object類*/

public

class

apublic

class

bextends

apublic

class

cextends

b

載入順序不可繼承使用情況

缺點

public

class

test

}class

apublic

void

showaa()

}class

bextends

apublic

void

showb()

}

解析:

向上轉型:父類引用子類物件[父類 obj = new 子類()]時,子類會自動轉型(非強轉)為父類物件,並操作父類物件中非private修飾的所有建構函式、屬性、方法向下轉型:父類引用子類物件[父類 obj = new 子類()]時,若想操作父類中不存在的方法,則需要手動轉換子類物件的引用(b2)為子類物件。

注意:向上(向下)轉型的必要條件一定要有繼承,且滿足父類引用子類物件,即:父類 obj = new 子類()

多型分為編譯時多型和執行時多型,即靜態繫結和動態繫結

多型三要素:繼承 重寫 向上轉型

public

class

test

}classa}

class

bextendsa}

class

cextends

a}

解析:

由上方**可了解,相同的父類引用[a]指向不同子類物件,所呼叫的show()方法由指向物件決定,動態呼叫不同指向物件的父類重寫方法,這一機制成為多型(通過動態繫結實現)

優先順序由高到低依次為:this.show(obj)>super.show(obj)>this.show((super)obj)>super.show((super)obj)

public

class

test

}class

apublic string show

(a obj)

}class

bextends

apublic string show

(a obj)

}class

cextends

bclass

dextends

b

解析:以ab.show(b)舉例

ab是乙個引用變數,型別為class a,則this為class a

使用this.show(obj),本例為 a.show(b obj)無果:class a中無當前方法

使用super.show(obj),本例為 (super)a.show(b obj)無果:a的超類object不參與

使用this.show((super) obj),本例為 a.show(a obj) ,根據繼承中子類重寫父類方法載入順序優先順序高於父類原則,實際呼叫方法為b.show(a obj)輸出:b --> a

類的訪問控制關鍵字

類內部本包

子類外部包

public√√

√√protected√√

×default√√

××private√×

××

JavaSE 基礎(封裝,繼承,多型)

繼承是從已有類得到繼承資訊建立新類的過程。提供繼承資訊的類被稱為父類 超類 基類 得到繼承資訊的類被稱為子類 派生類 繼承讓變化中的軟體系統有了一定的延續性,同時繼承也是封裝程式中可變因素的重要手段。通常認為封裝是把資料和運算元據的方法繫結起來,對資料的訪問只能通過已定義的介面。物件導向的本質就是將...

002 簡書樣式

寫在前面的話 以前了每次使用的時候都要進行文件的查詢,現在打算自己做乙個大致我以後回用到的功能模板,以後使用的時候直接進行複製就好了 文字1文字2文字3 1第一章第三節 前0後1 第一小節 好像只能到,後面不能再繼續了 第二小節 好像只能到,後面不能再繼續了 第三小節 好像只能到,後面不能再繼續了 ...

搬離簡書指南!

jianshu 登入到後台 解壓指令碼放到.md檔案的同級目錄 執行指令碼 自動建立資料夾為分類 自動建立資料夾為分類 自動將網路鏈結改為本地鏈結 網路鏈結改為本地鏈結 指令碼原始碼 python3環境 import re import urllib.request import urllib.pa...