论坛首页 招聘求职论坛

一个有关java继承类上传的问题

浏览 15892 次
精华帖 (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());
	}

}


结果是什么呢? 自己试了下,但仍然不明白其中的道理. 希望有人帮忙解惑。 谢谢
   发表时间:2008-05-21  
输出结果:

1
-2
Test3

也想不明白,等楼下解答
0 请登录后投票
   发表时间:2008-05-21  
关键是那个static 方法.
这个..额...
0 请登录后投票
   发表时间:2008-05-21  
to aids198311,

对于 1, -2 你知道 原因了? 能说说吗?
0 请登录后投票
   发表时间:2008-05-21  
这种问题弄明白又如何,弄不明白又如何?

实际开发中绝对不应当允许出现这种语法糖
这是维护者的噩梦

好的品质要靠好的习惯来保证
0 请登录后投票
   发表时间:2008-05-21  
to armorking,

面试人员 可不会这么想的
0 请登录后投票
   发表时间:2008-05-21  
这种题确实没意义,不学也罢。
0 请登录后投票
   发表时间:2008-05-21  
垃圾代码哦
0 请登录后投票
   发表时间:2008-05-21  
唉, 我今天 笔试的题目阿,很想知道为什么.
0 请登录后投票
   发表时间:2008-05-21  
子类是无法覆盖父类的static方法的.
由于是父类引用子类实例,所以前面打印1,而非static 方法可以被子类覆盖,所以打印子类方法里的东东!
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics