小编Vic*_*ung的帖子

继承中的私有方法

这是一个有趣的代码片段:

public class Superclass {

    public static void main (String[] args){
        Superclass obj = new Subclass();
        obj.doSomething(); #prints "from Superclass"
    }

    private void doSomething(){System.out.println("from Superclass");}
}

class Subclass extends Superclass {

    private void doSomething(){System.out.println("from Subclass");}

}
Run Code Online (Sandbox Code Playgroud)

我知道子类不会继承其父级的私有成员,但是obj设法调用它应该没有访问权限的方法.在编译时,obj的类型为Superclass,在运行时类型为Subclass.

这可能与doSomething()的调用发生在驱动程序类中的事实有关,这恰好是它自己的类(以及为什么可以首先调用doSomething()).

所以问题归结为,obj如何访问其父级的私有成员?

java inheritance private

12
推荐指数
4
解决办法
3万
查看次数

标签 统计

inheritance ×1

java ×1

private ×1