Java基礎 子類和父類之間的詭異事件

2021-07-12 00:19:21 字數 657 閱讀 9035

public

class basic1

public

void

basic()

}

public

class

basic2

extends

basic1

}

public

class basictest

}

子類的方法!

null

子類的方法!子類的成員變數!

null??? why

當我們呼叫new basic2()時建立basic2的例項。

例項的時候,系統會為basic2物件分配記憶體空間,basic2會有兩個str例項變數,會分配兩個空間來儲存str的值。分配完空間以後str的值為null。

接下來程式在執行basic2的構造器之前會執行basic1的構造器,basic1的建構函式中只有一行**,呼叫了basic()方法,因為子類重寫了父類的basic()方法,所以basic1的建構函式中呼叫的是子類的basic方法。

但是此時子類的成員變數str還沒有賦值,所以為null。

JAVA基礎 父類和子類執行順序

一 執行 父類 public class animal public animal public void a 子類 public class catextends animal public cat override public void a public static void main st...

C 父類和子類之間的轉換

學c 的時候有時候會對類型別之間的轉換感覺到些許的迷惑,下面記錄一點點理解和認識 首先需要明白一點 只有子類轉換成父類,父類不可能轉換成子類。因為子類是從父類繼承而來,子類中包含父類中所有成員。而如果父類可以轉換成子類,意味著將子類中將有一部分是未知的成員。這是不被允許的。在子類轉換成父類的時候,也...

java 子類與父類

1.父類 注 f m1 是父類不被繼承的方法 f m2 父類被子類重寫的方法 public class father public void f m1 public void f m2 2.子類 注 f m3是子類的私有方法 f m2 子類重寫父類方法 public class sunextends...