想知道f.num时为什么输出10?

在父类引用指向子类对象,这个是向上转型吧,此时父类的方法丢失,f.num时为什么输出10?

img

感觉你的代码有错误,你确定私有成员能访问?

以下内容部分参考ChatGPT模型:


向上转型只是将子类对象赋给了父类引用,但是子类对象本身并没有改变。因此,子类对象中的成员变量值仍然保持不变。在这个例子中,子类对象的num值为10,所以当通过父类引用访问num时,输出的值为10。

以下是一个示例代码:

class Parent {
    public int num = 5;
}

class Child extends Parent {
    public int num = 10;
}

public class Main {
    public static void main(String[] args) {
        Parent p = new Child();
        System.out.println(p.num); // 输出10
    }
}

如果我的建议对您有帮助、请点击采纳、祝您生活愉快

浅谈JVM(六):方法调用过程
这篇文章可能对你有帮助