下面的代码中发生了什么?请解释输出:
class Parent{
private void fun(){
System.out.println("parent fun\n");
}
public void accessFun(){
System.out.println(this);
this.fun();
}
}
class Child extends Parent{
private void fun(){
System.out.println("child fun");
}
}
class Test{
public static void main(String[] args) {
Child a = new Child();
Parent b = new Parent();
Parent c = new Child();
a.accessFun();
b.accessFun();
c.accessFun();
}
}
输出:
Child@7960847b
parent fun
Parent@3b192d32
parent fun
Child@16f65612
parent fun
为什么 this.fun() 行没有给出编译时错误?
我认为 fun 是 Child 类中的私有成员,因此不能从 Child 类外部(从它的 Parent 类的公共成员)访问。
为什么 this.fun() 会调用 fun() 的父类版本?请注意,这是指子类对象。
一只斗牛犬
守着一只汪
达令说
相关分类