提到子類物件的例項化,就得先對this 與super做乙個回顧
1.this關鍵字
1.可以呼叫的結構:屬性、方法;構造器
2.this呼叫屬性、方法:
this理解為:當前物件 或 當前正在建立的物件
1> 在類的方法中,我們可以使用"this.屬性"或"this.方法"的方式,呼叫
當前物件屬性或方法。但是,通常情況下,我們都擇省略"this."。
特殊情況下,如果方法的形參和類的屬性同名時,我們必須顯式
的使用"this.變數"的方式,表明此變數是屬性,而非形參。
2> 在類的構造器中,我們可以使用"this.屬性"或"this.方法"的方式,調
用當前正在建立的物件屬性或方法。但是,通常情況下,我們都擇省略
"this."。特殊情況下,如果構造器的形參和類的屬性同名時,我們必須
顯式的使用"this.變數"的方式,表明此變數是屬性,而非形參。
3.this呼叫構造器:
① 我們在類的構造器中,可以顯式的使用"this(形參列表)"方式,呼叫本類
中指定的其他構造器
② 構造器中不能通過"this(形參列表)"方式呼叫自己
③ 如果乙個類中有n個構造器,則最多有 n - 1構造器中使用了"this(形參
列表)"
④ 規定:"this(形參列表)"必須宣告在當前構造器的首行
⑤ 構造器內部,最多只能宣告乙個"this(形參列表)",用來呼叫其他的構
造器
2.super關鍵字1.super 關鍵字可以理解為:父類的
2.可以用來呼叫的結構:屬性、方法、構造器
3.super呼叫屬性、方法:
1> 我們可以在子類的方法或構造器中。通過使用"super.屬性"或"super.
方法"的方式,顯式的呼叫父類中宣告的屬性或方法。但是,通常情況下,我
們習慣省略"super."
2> 特殊情況:當子類和父類中定義了同名的屬性時,我們要想在子類中呼叫
父類中宣告的屬性,則必須顯式的使用"super.屬性"的方式,表明呼叫的是
父類中宣告的屬性。
3> 特殊情況:當子類重寫了父類中的方法以後,我們想在子類的方法中呼叫
父類中被重寫的方法時,則必須顯式的使用"super.方法"的方式,表明呼叫
的是父類中被重寫的方法。
4.super呼叫構造器:
1> 我們可以在子類的構造器中顯式的使用"super(形參列表)"的方式,調
用父類中宣告的指定的構造器
2> "super(形參列表)"的使用,必須宣告在子類構造器的首行!
3> 我們在類的構造器中,針對於"this(形參列表)"或"super(形參列表)"
只能二選一,不能同時出現
4> 在構造器的首行,沒顯式的宣告"this(形參列表)"或"super(形參列表)"
,則預設呼叫的是父類中空參的構造器:super()
5> 在類的多個構造器中,至少乙個類的構造器中使用了"super(形參列表)",
呼叫父類中的構造器
注意:
子類物件的例項化過程
源 class person public person string name,int age class student extends person public student string name,int age public student string name,int age,st...
子類的例項化過程
乙個物件例項化過程 person p new person 1,jvm會讀取指定的路徑下的person.class檔案,並載入進記憶體,並會先載入person的父類 如果有直接的父類的情況下 2,在堆記憶體中的開闢空間,分配位址。3,並在物件空間中,對物件中的屬性進行預設初始化。4,呼叫對應的建構函...
子類的例項化過程
乙個物件例項化過程 person p new person 1.jvm會讀取指定路徑下的person.class檔案,並載入進記憶體.並且會先載入person的父類 如果有直接父類的情況下 2.在堆記憶體中開闢空間,分配位址.3.在物件空間中,對物件中的屬性進行預設初始化.4.呼叫對應的建構函式進行...