锁定老帖子 主题:结果出乎大部分人的意料
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-10
最后修改:2011-04-11
package j2se.test; class A{ int x, y; public void setValue(int i, int j) { x = i; y = j; } int multiply(){ return x * y; } } class B extends A{ int x, y; B(int i, int j) { x = i; y = j; } int multiply(){ return x * y; } } public class Test{ public static void main(String[] args) { B subObj = new B(6, 9); subObj.setValue(7, 8); int m = subObj.multiply(); System.out.println(m); } } 结果是54.为什么不是56? 参考:http://bbs.langsin.com/thread-10113-1-1.html 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-10
调用被子类隐藏的变量,应该要用super关键字吧
|
|
返回顶楼 | |
发表时间:2011-04-10
A的xy
B的xy 明显是两个东西。 |
|
返回顶楼 | |
发表时间:2011-04-10
我承认我错了。
class C { public int x, y; public void setValue(int i, int j) { x = i; y = j; } } class D extends C { public int x, y; D(int i, int j) { x = i; y = j; } public void setValue(int i, int j) { super.setValue(i, j); x = i; y = j; } int multiply() { return x * y; } } |
|
返回顶楼 | |
发表时间:2011-04-10
kimmking 写道 A的xy
B的xy 明显是两个东西。 +1 |
|
返回顶楼 | |
发表时间:2011-04-10
变量的作用域不同而已!
|
|
返回顶楼 | |
发表时间:2011-04-11
shansun123 写道 kimmking 写道 A的xy
B的xy 明显是两个东西。 +1 +1 |
|
返回顶楼 | |
发表时间:2011-04-11
方法可以覆盖,变量不可以覆盖吧
|
|
返回顶楼 | |
发表时间:2011-04-11
结果在意料之中!
|
|
返回顶楼 | |
发表时间:2011-04-11
C_J 写道 我承认我错了。
class C { public int x, y; public void setValue(int i, int j) { x = i; y = j; } } class D extends C { public int x, y; D(int i, int j) { x = i; y = j; } public void setValue(int i, int j) { super.setValue(i, j); x = i; y = j; } int multiply() { return x * y; } } 94, 子类里调用的是父类的setValue方法,子类里没有这个方法, 改变不了子类里的 x,y 当然是6 9而不是7 8 |
|
返回顶楼 | |