2017-08-30 6 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 =新たなサブ()。 >私はa.show()を呼んでいるときに。の方法を表示しています。なぜ、私はサブクラスのオブジェクトを作成しています。子クラスのdonesにshowメソッドがある場合。エラーが発生するはずですが、デフォルトでsuperであるAクラスを継承しています。

  2. A a = new sub()で作成するオブジェクトの数。

  3. リファレンスを作成している場合は、そのリファレンスはどのように実行時に解釈されますか?
+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

関連する問題