2017-08-30 78 views
-4

重寫超類如何知道方法而不創建對象。在這段代碼中,我創建了一個子類的對象並存儲在超類的引用中。重寫超類如何知道方法而不創建對象

public class A{ 
      public void show(){ 
       System.out.println("A"); 
      } 
    } 
    public class sub extends A{ 
      public void display(){ 
       System.out.println("Displaay"); 
      } 
      public static void main(String []arg){ 
       sub s = new sub(); 
       s.display(); 
       A a= new sub(); 
       a.show(); 
     } 
    } 
  1. 甲一個=新的子(); >當我調用a.show()時。它是顯示a的方法。爲什麼,因爲我正在創建一個子類的對象。如果孩子班級有顯示方法。它應該給出一個錯誤,但是我們已經繼承了它應該有的默認超級A類。

  2. 應該在A a = new sub()上創建多少個對象;

  3. 如果我創建了一個引用A a>它是如何在運行時解釋的。
+1

我不明白你的問題。請重新說明。 –

+2

根本不清楚你在問什麼。你能詳細說明這個問題嗎? – David

+1

這裏沒有壓倒一切。 –

回答

0

當你擴展一個類時,你會自動從你的父類中知道所有的方法。

但要小心,擴展和重寫不是同一回事。

​​3210

Son.hello是一個擴展功能。
Son.display是一個重載函數調用。

+0

您可以將'@ Override'註釋添加到重寫的方法。這有好處[https://stackoverflow.com/a/94411/4244993] – jmattheis

+0

但是編譯器如何知道哪些被擴展,哪些被覆蓋 –

+0

@ R.deo也許你可以找到你的問題的答案這裏:https://stackoverflow.com/questions/14672144/how-does-java-overriding-work – ziMtyth

相關問題