论坛首页 招聘求职论坛

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

浏览 15767 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2008-05-22  
呵呵,再看了一遍你的回复。
还是坚持我的意见。。。
t3.i 这种调用方式,真的很无聊
0 请登录后投票
   发表时间:2008-05-22  
题目中的形式换成如下方式可能看得更清楚:
Test3 t3 = new Test2();
换了个形式,我想很多人都会知道结果了,很多SCJP的教程都是这种形式的。

基础知识还是很有必要的,如果哪天你真的要用继承和多态设计一个优秀的框架或者工具,没有必要的基础知识和技巧,是做不好的。
0 请登录后投票
   发表时间:2008-05-22  
foy 写道
呵呵,再看了一遍你的回复。
还是坚持我的意见。。。
t3.i 这种调用方式,真的很无聊


这只是道题,不是实际代码。这种调用方式是很忌讳,但是这个题目却很能说明问题,可以考察一些知识点。


icewubin 写道
题目中的形式换成如下方式可能看得更清楚:
Test3 t3 = new Test2();
换了个形式,我想很多人都会知道结果了,很多SCJP的教程都是这种形式的。

基础知识还是很有必要的,如果哪天你真的要用继承和多态设计一个优秀的框架或者工具,没有必要的基础知识和技巧,是做不好的。


确实,普通的业务逻辑开发是用不太上,但是要是深入搞的话,技术基础和思考模式是非常重要的
0 请登录后投票
   发表时间:2008-05-22  
freej 写道
foy 写道
呵呵,再看了一遍你的回复。
还是坚持我的意见。。。
t3.i 这种调用方式,真的很无聊


这只是道题,不是实际代码。这种调用方式是很忌讳,但是这个题目却很能说明问题,可以考察一些知识点。


icewubin 写道
题目中的形式换成如下方式可能看得更清楚:
Test3 t3 = new Test2();
换了个形式,我想很多人都会知道结果了,很多SCJP的教程都是这种形式的。

基础知识还是很有必要的,如果哪天你真的要用继承和多态设计一个优秀的框架或者工具,没有必要的基础知识和技巧,是做不好的。


确实,普通的业务逻辑开发是用不太上,但是要是深入搞的话,技术基础和思考模式是非常重要的

t3.i和t2.i是同名不同内存地址的成员变量?
0 请登录后投票
   发表时间:2008-05-22  
wolf2008 写道
freej 写道
foy 写道
呵呵,再看了一遍你的回复。
还是坚持我的意见。。。
t3.i 这种调用方式,真的很无聊


这只是道题,不是实际代码。这种调用方式是很忌讳,但是这个题目却很能说明问题,可以考察一些知识点。


icewubin 写道
题目中的形式换成如下方式可能看得更清楚:
Test3 t3 = new Test2();
换了个形式,我想很多人都会知道结果了,很多SCJP的教程都是这种形式的。

基础知识还是很有必要的,如果哪天你真的要用继承和多态设计一个优秀的框架或者工具,没有必要的基础知识和技巧,是做不好的。


确实,普通的业务逻辑开发是用不太上,但是要是深入搞的话,技术基础和思考模式是非常重要的

t3.i和t2.i是同名不同内存地址的成员变量?


也可以这么说。从另一个角度说,是不同命名空间的同名变量。
0 请登录后投票
   发表时间:2008-05-22  
子类不能重写父类的static方法。如果有一个是static的方法编译出错,如果都是static方法就实现不了多态了!
0 请登录后投票
   发表时间:2008-05-22  
to freej,

谢谢 你的解答,不过我还是不清楚 t3.f() 会打印出 -2。 负数我理解,但为什么是 -2,既然t3.i=1, 怎么也应该是 -1 啊. 难道是 因为 隐藏的this的关系?
0 请登录后投票
   发表时间:2008-05-22  
ganqing1234 写道
to freej,

谢谢 你的解答,不过我还是不清楚 t3.f() 会打印出 -2。 负数我理解,但为什么是 -2,既然t3.i=1, 怎么也应该是 -1 啊.



刚才说了,子类的实例方法把父类的覆盖了,也就是说永久替换了。当t3.f()时调用的是子类的方法,那么子类方法里的这句return -i;中的i引用的是子类的实例变量。为什么,因为t3.f()方法所在的命名空间是子类的空间,所以它要获取那个变量时首先要去自己的命名空间里寻找,也就当然寻找到了“int i = 2; ”,所以返回值就是-2了。这也是父类变量被子类隐藏的表现形式之一

ganqing1234 写道
to freej,
难道是 因为 隐藏的this的关系?


对,就是这样,从语言应用的层面上来说,就是因为隐藏的this的关系
0 请登录后投票
   发表时间:2008-05-22  
子类不能重载父类的static方法及I
0 请登录后投票
   发表时间:2008-05-22  
freej 写道
从语言应用的层面上来说,就是因为隐藏的this的关系

关键就是这句话。
Test2里的
public int f() {return -i;} 

实际上写清楚了就是
public int f() {return -this.i;} 

如果返回-1的话,那这个方法应该是
public int f() {return -super.i;} 


0 请登录后投票
论坛首页 招聘求职版

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