-2
A
回答
2
class A
{
public void foo() { System.out.println("foo"); }
public void baz() { System.out.println("baz"); }
}
class B extends A
{
public void foo() { System.out.println("fizz"); }
public void bar() { System.out.println("bar"); }
}
public class Program
{
public static void main(String[] args)
{
A obj1 = new A();
A obj2 = new B();
obj1.foo(); // prints "foo"
obj1.baz(); // prints "baz"
obj2.foo(); // prints "fizz"
obj2.baz(); // prints "baz"
obj2.bar(); // compile error
((B)obj2).bar(); // prints "bar"
((B)obj1).bar(); // runtime error
}
}
正如你可以看到,初始化爲B
A
類型的對象將調用以任何覆蓋方法B
,但在B
新方法不能被看到。未覆蓋的方法將使用超類中的版本。
你可以蒙上類更具體的(聲明爲超類的子類類型的對象)的東西,但如果對象是不實際上的更具體的類型的實例,你會得到一個ClassCastException
在運行時。
+0
這是好的,但我-think-的OP實際上是尋找一個上溯造型的例子。他有A,他想從B調用一個方法。 – Gimby
+0
@Gimby,這不會是倒立,這將是正常的類型轉換。不過,我會將其添加到我的答案中。 –
相關問題
- 1. 如何在類之間進行交互
- 2. 鞋子訪問類變量並與它們進行交互?
- 3. 如何與不同類中的擺動組件進行交互
- 4. 如何與類中的文本框控件進行交互?
- 5. C#與其他類中的類的變量進行交互
- 6. 如何與交互式子進程進行通信
- 7. 彙編語言如何與互聯網之類的東西進行交互?
- 8. Python與子進程交互
- 9. WIF如何與[授權]進行交互?
- 10. 如何從Perl與ClearCase進行交互?
- 11. 如何與CD進行交互?
- 12. 如何與USSD菜單進行交互?
- 13. 如何從ruby與RVM進行交互?
- 14. 如何與obd ii elm327進行交互?
- 15. 如何與pynessus進行交互
- 16. 如何在Swift中對超類的超類進行分類?
- 17. 類型錯誤:超(類型,OBJ)運行pyprocessing腳本時交互
- 18. 與C++進行交互
- 19. 與jQuery進行PDF交互
- 20. 子類的構造函數如何與PHP中的父類構造函數進行交互?
- 21. 如何打開一個TTY與git-push鉤子進行交互?
- 22. Java與JFrame和類交互
- 23. 與Tomcat servlets交互的類
- 24. 與Ruby中的類對象進行交互
- 25. Java與不同類別的對象進行交互
- 26. 正確地與PHP類/函數進行交互? (OOP)
- 27. Spring RestController與其他Java類進行交互
- 28. 創建一個類與SQL數據庫進行交互
- 29. 類型類和模塊如何交互?
- 30. Java類與另一類交互
請閱讀有關類和繼承的基本Java教程。 –
母類方法在子類中可用,只要方法不是「私有」 – Kwoinkwoin
那不是我要求的 – user3328784