Temp1 t1=new Temp2();
這裏Temp1是Temp2的超類。代碼工作得很好,並且t1做爲Temp1的參考變量,但Temp2()如何作爲Temp1的構造函數?創建對象時的尷尬
Q
創建對象時的尷尬
0
A
回答
2
這是polymorphism的基礎:假設您有幾個繼承自父類的子類。您希望通過父類上定義的接口/方法來使用所有這些子類,而不必擔心每個子類中的實現細節(每個類可能會做不同的事情,但具有相同的整體語義)。
這是可能的,因爲子類從父類繼承,因此子類與其父類具有IS A關係。
0
但Temp2()如何作爲Temp1的構造函數?
它沒有。這是另一種方式。它是作爲參考的Temp1 t1
,其可以容納任何種類的對象形式Tempt1
系列,並且因爲Temp2 extends Temp1
它被認爲是Type1
的類型。
這是完全安全的,因爲Type2
繼承了Type1
所有成員,所以沒有一些方法或字段上調用t1
參考將嘗試執行/使用一些未定義的方法/變量的風險。
同樣由於多態性(或更精確地late-binding - 檢索以及基於實例類型的運行時方法的執行代碼時,不引用類型)的Type2
方法將被調用,而不是Type1
。這使我們可以擁有抽象類和接口。
0
T1 do act as reference variable for Temp1
不,實際上T1變量是類型TEMP1的充當參考變量爲TEMP2。
but how can Temp2() works as constructor for Temp1
繼承是面向對象的特性由子類繼承父類的所有屬性,在這種情況下TEMP2是繼承自其超temp1中所有方法子類。因此temp2是一種temp1系列,因此Temp2構造函數可以通過Temp1引用變量(t1)引用。
您必須閱讀:https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html
相關問題
- 1. 尷尬arc4random結果
- 2. 尷尬的Java日期創作行爲
- 3. 尷尬的水平中心對齊
- 4. 尷尬的數據結構
- 5. 尷尬的LINQ排序
- 6. 檢查尷尬的陣列
- 7. 尷尬的繼承問題
- 8. 對齊尷尬情節和軸標題
- 9. 尷尬轉義字符
- 10. 尷尬的差距使用的box-shadow
- 11. 查詢尷尬存儲的數據
- 12. PHP目錄路徑姿態的尷尬
- 13. 尷尬的DLL導出部分
- 14. 圖像視圖導致尷尬坑?
- 15. URL重寫,如何避免URL尷尬?
- 16. 如何解決這個onclick尷尬?
- 17. 拖放,防止尷尬突出顯示?
- 18. 項目演示過程中最尷尬的時刻?
- 19. 使驗證對話框不那麼令人尷尬
- 20. 從文本文件讀取時,PHP很尷尬。可變讀BLANK
- 21. Android的上下文getSystemService:地圖的尷尬全局狀態
- 22. 尷尬的浮點性能(蟒蛇分佈)
- 23. 動態,尷尬的反射沒有更多?
- 24. 尷尬的展示只在IE中顯示一半圖像?
- 25. 繪製一個尷尬的大熊貓多指數數據幀
- 26. 如何在gce上設置令人尷尬的並行作業
- 27. 令人尷尬的DAO字符串操作問題
- 28. 只有一個三尷尬的代碼行? 。
- 29. 如何並行這種尷尬的並行循環與Python
- 30. 「尷尬平行」編程使用羣集上的python和PBS
你混淆的對象,變量和引用。 (和類型繼承。) –
https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html – BoDidely
t1在這種情況下在運行時是Temp2類型,而不是Temp1 – BoDidely