我想確保我對(duì)靜態(tài)多態(tài)性的理解是正確的請(qǐng)看下面的代碼class a { int x=0; }class b extends a { int x=4; } public class main4 { public static void main(String[] args) { a f = new b(); System.out.println(f.x); b ff = new b(); System.out.println(ff.x); }}輸出是04發(fā)生這種情況是因?yàn)榫幾g器查看引用的聲明類型并據(jù)此確定在編譯時(shí)打印哪個(gè) x 嗎?(f 被聲明為類型 a,編譯器查看 fx 并決定它意味著 ax)??&如果是這樣,這稱為靜態(tài)多態(tài)性或隱藏還是什么?提前致謝
1 回答

慕姐8265434
TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
多態(tài)性就像通過鑰匙孔看對(duì)象。您看不到整個(gè)對(duì)象,而只看到它的一部分,它對(duì)應(yīng)于您已將對(duì)象的引用分配給的變量類型。
該對(duì)象可以被視為不同的“形狀/形式” - 這取決于您正在查看的鑰匙孔。但它仍然是計(jì)算機(jī)內(nèi)存中的同一個(gè)對(duì)象。您可以看到的形式取決于您將對(duì)象分配給的變量類型。
多態(tài)性是看到同一對(duì)象的多種形式。
如果您有對(duì)象創(chuàng)建者-當(dāng)您將此對(duì)象分配給 type 的變量時(shí),new b()
您會(huì)將其視為類代表。當(dāng)您將它分配給 type 的變量時(shí),您會(huì)把它看作一個(gè)類代表。但它仍然是同一個(gè)對(duì)象。并且......你可以在變量之間轉(zhuǎn)換它:b
b
a
a
f = (a)ff;
你會(huì)發(fā)現(xiàn)同一對(duì)象突然被視為a
類的代表(包括x
屬于該類的字段的可見性a
)。
添加回答
舉報(bào)
0/150
提交
取消