我对这个代码的一些问题:关于超引用和子类混淆对象
class superclass
{
void bark() {}
}
class subclass extends superclass
{
void bark() {}
public static void main(String[] args) {
superclass refvar = new subclass();
refvar.bark();
}
}
为什么要为父母在这种情况下的方法,孩子是否有与否?我被告知,在编译时引用变量是超类型的,所以编译器在编译时检查这个超类的方法;那是准确的吗?
当编译器读取
bark()
时,它如何知道下一步该去哪里?我知道子方法覆盖它,但我想知道它首先进入超类方法或子类,以及为什么。为什么子类需要更宽范围的访问修饰符?
这是基本的面向对象编程的原则。请仔细阅读以下链接:http://docs.oracle.com/javase/tutorial/java/IandI/override.html – Seshagiri