java中类扩展的功能

时间:2017-02-15 13:18:12

标签: java oop

假设存在以下类:

public class A {

  public void whatAreYou() {
    System.out.println("A");
  }
}

___________________________

public class B extends A {

  public void whatAreYou() {
    System.out.println("B");
  }
}

现在,我们按以下方式初始化a和b:

A b = new B();
b.whatAreYou();

_______________

B a = new A();
a.whatAreYou();

问题是:这些程序是否正常运行?如果没有,他们有什么错误?

我的意见:

我认为第一个程序应该可以正常工作,因为B类是A类的扩展。但是我不能告诉我们这里有什么样的对象。它是否也具有B的每个属性?除此之外,它应该打印" B"。

第二个程序不起作用,但我没有明确的解释。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

将代码放在IDE中肯定会有所帮助,因为您可以使用调试器逐步查看正在发生的事情。您还可以看到' B a = new A()的编译时错误;'从那里开始关于类的功能,在这种情况下,B是覆盖' whatAreYou()'方法。使用@Override注释可以清楚地表明这一点。