在继承类中出现了一个和基类一样名字的私有方法,那么,创建一个继承类对象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(); //就这儿
}
}
,用该对象调用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(); //就这儿
}
}
只是private的不会被override
op.f(); //就这儿
---------------
这样的写法根本不存在转不转型的问题,也不存在多态的问题
除非你的本意是WithFinals op = new OverridingPrivate();
op.f(); //就这儿这里不对,因为你的f方法被声明为private,所以在外部根本无法调用,你又怎么可能op.f()这样去调用呢????