根据下面的代码,如果父类(super class)引用指向子类对象,并且子类重写了父类(super class)的方法,则父类(super class)引用将始终具有对子类中被重写方法的完全访问权限,并且无法访问其他方法的子类。我的假设正确吗?
class ParentClass{
public void Method(){
System.out.println("Parent method");
}
}
public class ChildClass extends ParentClass{
public void Method(){
System.out.println("child method");
}
public static void main(String[] args) {
ParentClass obj2 = new ChildClass();
obj2.Method();
}
}
最佳答案
您所拥有的引用文献的类型是关键。 obj2
是 ParentClass
类型,因此它只能访问 ParentClass
定义的接口(interface)(包括 Method
)。在运行时,运行的 Method
是实际对象 obj2
引用的重写方法,它是来自 ChildClass
的方法。如果 ChildClass
定义了 ParentClass
没有的方法,那么您无权从 obj2
引用访问它,这是正确的,因为它是不是 obj2
(ParentClass
) 类型的一部分。 (您必须将引用转换为 ChildClass
才能访问它。)
关于java - 父类(super class)引用访问说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46743458/