2017-08-30 54 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

相关问题