我对此代码有一些疑问:
class superclass
{
void bark() {}
}
class subclass extends superclass
{
void bark() {}
public static void main(String[] args) {
superclass refvar = new subclass();
refvar.bark();
}
}
为什么在这种情况下,无论孩子有没有方法,父母都必须有方法?我被告知在编译时引用变量是超类类型,所以编译器在编译时检查超类中的这个方法;那准确吗?
当编译器读取
bark()
时,它如何知道下一步要去哪里?我知道子方法会覆盖它,但我想知道它首先进入超类方法或子类,以及为什么。为什么子类需要具有更广泛范围的访问修饰符?