public class Polymorphism2 { public static void main(String[] args) {
A ref1 = new C();
B ref2 =(B) ref1;
System.out.println(ref2.g());
}
}
class A {
private int f() {return 0;}
public int g() {return 3;}
}
class B extends A {
private int f() {return 1;}
public int g() {return f();}
}
class C extends B {
public int f() {return 2;}
}
结果是1,为什么我觉得是2?
还有就是静态方法的隐藏和普通方法的覆盖有什么区别?
A ref1 = new C();
B ref2 =(B) ref1;
System.out.println(ref2.g());
}
}
class A {
private int f() {return 0;}
public int g() {return 3;}
}
class B extends A {
private int f() {return 1;}
public int g() {return f();}
}
class C extends B {
public int f() {return 2;}
}
结果是1,为什么我觉得是2?
还有就是静态方法的隐藏和普通方法的覆盖有什么区别?
解决方案 »
- 关于改变画笔透明度
- 请教高手解答:jdk1.6里为什么没有SortUtil这个类?
- java list 问题
- 报错说是AppletInOut不是一个抽象的类,并未覆盖。。。。求助
- 关于泛型接口的声明
- 数据类型转换
- why I can't adding a window to a container
- 怎么样才能跟踪程序代码的执行?? 谢谢
- String s=new String("avc")共生成几个对象?
- 一个运行错误:Exception in "thread" main java.long.NoClassDefFoundError: URShift.
- 请问java中如何用代码展开一棵树的某个节点?
- 线程问题
查看父类有没有,有的话调用父类的,但不能调用其没有的但子类有的方法!
B ref2 =(B) ref1;的效果是将ref1这个对象强转成B类
B中的方法g()可以覆盖A类中的方法g()
但B中的方法f()不可以,因为父类f()中的方法是私有的,所以调用B类中的方法返回1.
至于你的第二个问题中静态方法的隐藏,不好意思不知道你指的什么意思