锁定老帖子 主题:一个有关java继承类上传的问题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-22
呵呵,再看了一遍你的回复。
还是坚持我的意见。。。 t3.i 这种调用方式,真的很无聊 |
|
返回顶楼 | |
发表时间:2008-05-22
题目中的形式换成如下方式可能看得更清楚:
Test3 t3 = new Test2(); 换了个形式,我想很多人都会知道结果了,很多SCJP的教程都是这种形式的。 基础知识还是很有必要的,如果哪天你真的要用继承和多态设计一个优秀的框架或者工具,没有必要的基础知识和技巧,是做不好的。 |
|
返回顶楼 | |
发表时间:2008-05-22
foy 写道 呵呵,再看了一遍你的回复。
还是坚持我的意见。。。 t3.i 这种调用方式,真的很无聊 这只是道题,不是实际代码。这种调用方式是很忌讳,但是这个题目却很能说明问题,可以考察一些知识点。 icewubin 写道 题目中的形式换成如下方式可能看得更清楚:
Test3 t3 = new Test2(); 换了个形式,我想很多人都会知道结果了,很多SCJP的教程都是这种形式的。 基础知识还是很有必要的,如果哪天你真的要用继承和多态设计一个优秀的框架或者工具,没有必要的基础知识和技巧,是做不好的。 确实,普通的业务逻辑开发是用不太上,但是要是深入搞的话,技术基础和思考模式是非常重要的 |
|
返回顶楼 | |
发表时间:2008-05-22
freej 写道 foy 写道 呵呵,再看了一遍你的回复。
还是坚持我的意见。。。 t3.i 这种调用方式,真的很无聊 这只是道题,不是实际代码。这种调用方式是很忌讳,但是这个题目却很能说明问题,可以考察一些知识点。 icewubin 写道 题目中的形式换成如下方式可能看得更清楚:
Test3 t3 = new Test2(); 换了个形式,我想很多人都会知道结果了,很多SCJP的教程都是这种形式的。 基础知识还是很有必要的,如果哪天你真的要用继承和多态设计一个优秀的框架或者工具,没有必要的基础知识和技巧,是做不好的。 确实,普通的业务逻辑开发是用不太上,但是要是深入搞的话,技术基础和思考模式是非常重要的 t3.i和t2.i是同名不同内存地址的成员变量? |
|
返回顶楼 | |
发表时间:2008-05-22
wolf2008 写道 freej 写道 foy 写道 呵呵,再看了一遍你的回复。
还是坚持我的意见。。。 t3.i 这种调用方式,真的很无聊 这只是道题,不是实际代码。这种调用方式是很忌讳,但是这个题目却很能说明问题,可以考察一些知识点。 icewubin 写道 题目中的形式换成如下方式可能看得更清楚:
Test3 t3 = new Test2(); 换了个形式,我想很多人都会知道结果了,很多SCJP的教程都是这种形式的。 基础知识还是很有必要的,如果哪天你真的要用继承和多态设计一个优秀的框架或者工具,没有必要的基础知识和技巧,是做不好的。 确实,普通的业务逻辑开发是用不太上,但是要是深入搞的话,技术基础和思考模式是非常重要的 t3.i和t2.i是同名不同内存地址的成员变量? 也可以这么说。从另一个角度说,是不同命名空间的同名变量。 |
|
返回顶楼 | |
发表时间:2008-05-22
子类不能重写父类的static方法。如果有一个是static的方法编译出错,如果都是static方法就实现不了多态了!
|
|
返回顶楼 | |
发表时间:2008-05-22
to freej,
谢谢 你的解答,不过我还是不清楚 t3.f() 会打印出 -2。 负数我理解,但为什么是 -2,既然t3.i=1, 怎么也应该是 -1 啊. 难道是 因为 隐藏的this的关系? |
|
返回顶楼 | |
发表时间: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的关系。 |
|
返回顶楼 | |
发表时间:2008-05-22
子类不能重载父类的static方法及I
|
|
返回顶楼 | |
发表时间:2008-05-22
freej 写道 从语言应用的层面上来说,就是因为隐藏的this的关系。
关键就是这句话。 Test2里的 public int f() {return -i;} 实际上写清楚了就是 public int f() {return -this.i;} 如果返回-1的话,那这个方法应该是 public int f() {return -super.i;} |
|
返回顶楼 | |