|
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (6)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-05-21
看到 这样一道题目:
class Test3 {
int i = 1;
public int f() {return i;}
static String g() {return "Test3";}
}
class Test2 extends Test3 {
int i = 2;
public int f() {return -i;}
static String g() {return "Test2";}
}
public class Test {
public static void main(String[] args) {
Test2 t2 = new Test2();
Test3 t3 = (Test3) t2;
System.out.println(t3.i);
System.out.println(t3.f());
System.out.println(t3.g());
}
}
结果是什么呢? 自己试了下,但仍然不明白其中的道理. 希望有人帮忙解惑。 谢谢 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
输出结果:
1 -2 Test3 也想不明白,等楼下解答 |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
关键是那个static 方法.
这个..额... |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
to aids198311,
对于 1, -2 你知道 原因了? 能说说吗? |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
这种问题弄明白又如何,弄不明白又如何?
实际开发中绝对不应当允许出现这种语法糖 这是维护者的噩梦 好的品质要靠好的习惯来保证 |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
to armorking,
面试人员 可不会这么想的 |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
这种题确实没意义,不学也罢。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
垃圾代码哦
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
唉, 我今天 笔试的题目阿,很想知道为什么.
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-21
子类是无法覆盖父类的static方法的.
由于是父类引用子类实例,所以前面打印1,而非static 方法可以被子类覆盖,所以打印子类方法里的东东! |
|
| 返回顶楼 | |






