子類重寫父類方法後呼叫時需要記住什麼

2021-10-24 05:57:53 字數 663 閱讀 9887

子類繼承父類,重寫了父類方法,那麼呼叫時就會呼叫子類重寫後的方法

public

class

testparent

public

void

say()}

public

class

testchild

extends

testparent

public

void

say(

)public

static

void

main

(string[

] args)

}

可能你會認為答案是這樣的

helloparent

hellochild

但這是錯的,在執行父類的構造方法時,呼叫的並不是父類的say方法,而是子類重寫的say方法,此時子類非靜態變數並未載入,所以輸出為null。要想指定呼叫父類方法可用super.say()來指定,若想執行父類構造器時輸出name,可將子類變數設定為static/final,那麼就會先於構造器執行。

hellonull

hellochild

Java父類呼叫被子類重寫的方法

父類 public class father public void talking 子類 public class son extends father public static void main string args 輸出 son is talking 說明 1 父類有兩個方法 talki...

重寫 呼叫父類方法

所謂重寫,就是子類中,有乙個和父類相同名字的方法,在子類中的方法會覆蓋掉父類中同名的方法 class cat object def sayhello self print halou 1 class bosi cat def sayhello self print halou 2 bosi bosi...

重寫父類方法和呼叫父類方法

class animal object def eat self print 吃 def drink self print 喝 class dog animal def bark self print 汪汪叫 print 汪汪叫 print 汪汪叫 print 汪汪叫 print 汪汪叫 class...