Java構造方法中的多型

2021-04-18 11:48:31 字數 682 閱讀 4197

public

classqdbextendsdepend   

voidprint()   

public

static

voidmain(string args)   

}   

classdepend   

voidprint()   

}  對於這道題,我的答案是:

depend=> 10 target=>30 depend=>20

可是在執行後我發現答案是:

target=> 0 target=> 30 depend=> 20

看到答案讓我很是費解,按照方法的呼叫順序:在呼叫子類的構造方法之前先呼叫父類的構造方法,在執行構造方法的語句之前先初始化成員變數。按照這個順序得到的應該是我預期的答案。

不過在用debug跟蹤後發現在呼叫父類構造方法裡的print()時執行的不是父類的構造方法,而是去執行了子類的構造方法。也就是說在構造方法裡也存在著多型性。不過這也只是我的猜測,查了些資料也沒有找到答案,姑且先記下來,以後慢慢去了解。

java構造器內部的多型方法

我們知道,動態繫結的呼叫是在執行時才決定的,物件無法知道到底呼叫的是哪個類的方法。當我們在構造器中呼叫動態繫結的方法,就會用到該方法被覆蓋之後的定義。但是這種呼叫的效果難以預計,因為被覆蓋的方法在物件被完全構造之前就會被呼叫。我們先來看看下面這段 class base public void tel...

java基礎 多型 構造器內部的多型方法行為

package polymorphism class glyph void draw glyph class roundglyph extends glyph void draw public class polyconstructor 結果 static glyph glyph before dr...

Java中的構造方法

建構函式 1.函式名與類名相同 2.不用定義返回值型別,不可以寫return語句 3.物件建立時就會呼叫相應的建構函式,所以建構函式的作用可以給物件進行初始化 4.當乙個類中沒有定義建構函式時,建立物件時系統會預設給該類加乙個空引數的建構函式,且其許可權和類一致否則無法建立 5.當在類中自定義了建構...