java - 父类(super class)引用访问说明

标签 java inheritance

根据下面的代码,如果父类(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();

    }

}

最佳答案

您所拥有的引用文献的类型是关键。 obj2ParentClass 类型,因此它只能访问 ParentClass 定义的接口(interface)(包括 Method)。在运行时,运行的 Method 是实际对象 obj2 引用的重写方法,它是来自 ChildClass 的方法。如果 ChildClass 定义了 ParentClass 没有的方法,那么您无权从 obj2 引用访问它,这是正确的,因为它是不是 obj2 (ParentClass) 类型的一部分。 (您必须将引用转换为 ChildClass 才能访问它。)

关于java - 父类(super class)引用访问说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46743458/

相关文章:

c++ - 为什么我必须通过this指针访问模板基类成员?

Java Swing GUI 更新/更改方法 - 卡住在循环中

java - 将 .jtl 报告转换为 jp@gc 图表

java - 当子类在另一个包中时无法覆盖父类(super class)的抽象方法

ruby - 从 User 类继承的多个基于角色的类 - Rails 4

java - 类不继承自扩展至 JComponent 的类

javascript - 覆盖基类的特权方法

java - JFrame 的 BoxLayout

java - 在 Storm 中为单个 worker 分配内存

java - JPanel 不重绘