标题: 一个关于继承和多态的问题(提问篇)
- FantasySoft 2004-12-28 00:00 阅读:1120
- 评论:8 查看评论 | 添加评论

        这个问题是我自己的一个盲点问题,因为当我看到以下的代码以及选项的时候,我做出了错误的选择。后来,我知道了原因所在,但是我想应该会有很多不同的解释,特将问题列示如下。首先,先看一下代码:

[图片][图片]public class Test [图片]{
[图片][图片]    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;
[图片]    }
[图片]}

问题是:请问打印出来的是0,是1,是2,还是3?如果是ref1.g()的话,结果又是什么呢?也许问题很简单,还请各位不吝指教,谢谢!


查看评论 | 添加评论
返回顶部 | 返回首页