在Java中,我被賦予了一項任務。我可以大致描述了我的問題與它如下:使用其他子類的子類方法,橫向鑄造?
創建三個AB類和C
一個類的實例變量J,K,L,setter和getter方法,也方法X,這使得計算基於它們。
B類是A的一個子類,使用j,k,l覆蓋了方法x,並且具有相同的空簽名。
C類也是A的一個子類,並且有一個額外的類y可以做其他的垃圾。
現在,實例化一個C類對象,設置它的變量,execute方法X,然後使用方法x的從B類
我的問題是覆蓋版本中,我怎麼做,最後一部分?我認爲這個問題是不正確的,否則我解釋錯了。我可以將我的C類對象轉換爲類B對象,然後使用x()的B類版本?我對鑄造物體並不瞭解多少,以及是否可以從一個物體投射到另一個物體。上行可能與「橫向/橫向」鑄造一樣有損,但我從來沒有聽說過後者。是否不可能在類C中使用類B中的方法而不讓類C內部實例化並從它自己的變量重建類B對象?我有道理嗎?
附錄:
好的。因此,兄弟姐妹不能彼此被投擲?因爲C和B都是「[我]對象層次結構的一部分」。我可以鑄造,然後回到不同的子類嗎?就像把貓餵給動物課,然後把狗餵給動物一樣?因爲方法x依賴於類A和類B中的實例變量,所以在C中創建一個新的B實例將創建一個字段/變量不相同的對象,它們都將爲零或類似。所以我將不得不將每個j,k和l的值複製到C類對象中的新B類型對象中。這看起來像是浪費時間和內存,將對象變量複製到另一個非常相似的對象中。但是沒有其他辦法?
二附錄:
雖然我選擇了一個答案,我仍然好奇一般鑄造和我所說的橫向鑄什麼。如果B和C都是A的子類,你可以允許從B到C嗎?另外,一個人如何允許一般的投射?
事實證明,是的,教授希望我們基本上看,這是不可能的,手動使用getter和setter以重建對象C的內部對象B的另一個實例,以便使用方法從x乙這是@Nathan Huges所描述的。 – adjenks