黑马程序员技术交流社区
标题:
父类变量被隐藏
[打印本页]
作者:
jix707
时间:
2013-8-13 15:01
标题:
父类变量被隐藏
class A
{
int i,j;
void setIJ(int i,int j)
{
this.i=i;
this.j=j;
}
int multiply()
{
return i*j;
}
}
class B extends A
{
int i,k;
B(int i,int k)
{
this.i=i;
this.k=k;
}
int multiply()
{
return i*j*k;
}
}
public class ABtest
{
public static void main(String a[])
{
B subO=new B(6,9);
subO.setIJ(7,8);//调用父类方法setIJ(); 疑问语句
int m=subO.multiply();
System.out.println("m="+m);
}
}
输出为:m=432
subO通过构造初始化,i=6 k=9
然后 subO.setIJ(7,8); 这一语句中,8被赋给了变量j . 参数7发生了什么? 因为最后的结果表明子类对象的变量i被初始化为6后,这一语句仅给j赋值了 参数7的处理细节是什么样的?
作者:
赵国刚
时间:
2013-8-13 15:08
02.<P>class A
03.{
04. int i,j;
05. void setIJ(int i,int j)
06. {
07. this.i=i;
08. this.j=j;
09. }
10. int multiply()
11. {
12. return i*j;
13. }
14.}</P>
15.<P>class B extends A
16.{
17. int i,k;
18. B(int i,int k)
19. {
20. this.i=i;
21. this.k=k;
22. }
23. int multiply()
24. {
25. return i*j*k;
26. }
27.}</P>
28.<P>public class ABtest
29.{
30. public static void main(String a[])
31. {
32. B subO=new B(6,9);
33. subO.setIJ(7,8);//调用父类方法setIJ(); 疑问语句
34.<FONT color=red>因为上面你的方法用了this关键字.你把参数传递过去.默认就赋值使用this关键字的变量. 7那个参数也用了this..所以全赋值到了父类的变量上了.</FONT>
35. int m=subO.multiply();
36. System.out.println("m="+m);
37. }
38.}
39.</P>
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2