第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

超類變量如何保存僅存在于子類中的數(shù)據(jù)成員值?

超類變量如何保存僅存在于子類中的數(shù)據(jù)成員值?

www說 2021-07-05 17:39:34
我試圖了解超類類型的變量如何將值存儲在僅存在于子類中的數(shù)據(jù)成員中。例如在 Java 中,讓我們說 class Childextends Parent。 Child有一個數(shù)據(jù)成員childMember(假設(shè)它是一個int)。這在 Java 中是合法的:Parent parentObject = new Child();((Child)parentObject).childMember = 5;但是如何parentObject存儲一個值,childMember因為它是類型的Parent并且Parent沒有childMember?我知道它正在被強制轉(zhuǎn)換以設(shè)置值,但是它如何使數(shù)據(jù)成員能夠存儲它,因為它不是子對象?
查看完整描述

2 回答

?
米脂

TA貢獻(xiàn)1836條經(jīng)驗 獲得超3個贊

在這段代碼中:


Parent parentObject = new Child(); 

((Child)parentObject).childMember = 5;

該parentObject對象的實際/運行時類Child,這解釋了為什么所有的作品。


但是 parentObject 如何為 childMember 存儲值,因為它是 Parent 類型,而 parent 沒有 childMember?


這個問題更適用于這段代碼:


Parent parentObject = new Parent(); 

((Child)parentObject).childMember = 5;

但是,在這種情況下,強制轉(zhuǎn)換((Child)parentObject)將不起作用,并且 Java 將ClassCastException在運行時引發(fā) a ,正如您所期望的那樣。


查看完整回答
反對 回復(fù) 2021-07-14
?
繁星點點滴滴

TA貢獻(xiàn)1803條經(jīng)驗 獲得超3個贊

首先,引用是 type Parent,它指向的對象是 type Child,因此您的整個邏輯在另一個答案中詳細(xì)說明。


但這是一個非常簡單的例子,讓我們做一個更有趣的例子:


static class Parent {

    public int x = 5;

}


static class Child extends Parent {

    public int x = 3;

}

有多少x的不Child呢?出色地...


Arrays.stream(Child.class.getFields())

            .map(Field::getName)

            .forEachOrdered(System.out::println); // x AND x again

那么你如何訪問它們中的每一個?


Child c = new Child();

System.out.println(c.x); // 3


Parent p = c;

System.out.println(p.x); // 5


查看完整回答
反對 回復(fù) 2021-07-14
  • 2 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號