方法覆盖的一个小疑点

ck_chuyun 2005-12-05 05:39:58
在继承类中出现了一个和基类一样名字的私有方法,那么,创建一个继承类对象op后
,用该对象调用f(),是不是仅仅隐藏了基类方法而已!向上转型根本不会发生?我的
理解是因为private方法根本不是基类接口.大家讨论讨论.

class WithFinals {
private void f() {
System.out.println("WithFinals.f()");
}

}

class OverridingPrivate extends WithFinals {
private void f() {
System.out.println("OverridingPrivate.f()");
}
}

class Test{
public static void main(String[] args) {
OverridingPrivate op = new OverridingPrivate();
op.f(); //就这儿
}
}
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
火山企鹅 2005-12-07
  • 打赏
  • 举报
回复
OverridingPrivate op = new OverridingPrivate();
op.f(); //就这儿

这里不对,因为你的f方法被声明为private,所以在外部根本无法调用,你又怎么可能op.f()这样去调用呢????
ck_chuyun 2005-12-07
  • 打赏
  • 举报
回复
嗯,我也是这么想的
believefym 2005-12-05
  • 打赏
  • 举报
回复
OverridingPrivate op = new OverridingPrivate();
op.f(); //就这儿
---------------
这样的写法根本不存在转不转型的问题,也不存在多态的问题
除非你的本意是WithFinals op = new OverridingPrivate();
believefym 2005-12-05
  • 打赏
  • 举报
回复
所有的父类的都被继承,包括private
只是private的不会被override
LuckyBall 2005-12-05
  • 打赏
  • 举报
回复
对啊,私有方法和私有变量一样是不会被继承的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧