请解释下一下代码的运行结果

public class PrivateOverride{
    private void f(){
        System.out.printf("Private f()");
    }
    public static void main(String args[]){
        PrivateOverride po = new Derived();
        po.f();
    }
}
class Derived extends PrivateOverride{
    public void f(){
        System.out.printf("Public f()");    
    }
}

输出结果是:

private f()
阅读 2.5k
1 个回答

java上转型对象属性:
1. 上转型对象不能操作子类新增加的成员变量,不能使用子类新增的方法。即为较子类B失去一些属性和功能,这些属性和功能是新增的。
2. 上转型对象可以操作子类继承或隐藏的成员变量,也可以使用子类继承的或重写的方法。即为上转型对象可以操纵父类原有的属性和功能,无论这些方法是否被重写。
3. 上转型对象调用方法时,就是调用子类继承和重写过的方法。而不会是新增的方法,也不是父类原有的方法。
4. 可以将对象的上转型对象再强制转换到一个子类对象,强制转换过的对象具有子类所有属性和功能。

因为你父类中f()是私有的,没有被子类所继承和重写,所以调用的是自身的f()方法。输出Private f()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题