首页 新闻 搜索 专区 学院

java关键字this

0
[已解决问题] 解决于 2014-08-07 12:07

class Father{
  public int a=10;


  public void test(){
  System.out.println(this.a);
  }
}


class Son extends Father{
  public int a=20;
}

 

mian方法:

Son son=new Son();
son.test();

这里输出10。请问当实例化Son时,当调用父类test()方法时,test()方法内的this是指哪个对象,是Son对象,还是父类Father对象。

易之名的主页 易之名 | 初学一级 | 园豆:103
提问于:2014-08-07 11:08
< >
分享
最佳答案
0
执行的是fa.test(); this是son;  因为方法是Father的,不是Son,所以this(son)在执行test()时,JVM仍旧把son当做Father 的对象,所以它取到的值是fa的a,而不是son的a
奖励园豆:5
乐享程序员 | 小虾三级 |园豆:930 | 2014-08-07 11:29
其他回答(1)
0

父类本身没有test方法呀,它是直接调用子类的吧。既然你都知道输出是10了,那当然是子对象的。除非你重载子类的test函数。

XiaoFaye | 园豆:3082 (老鸟四级) | 2014-08-07 11:12

class Father怎么会没有test()方法呢?

支持(0) 反对(0) 易之名 | 园豆:103 (初学一级) | 2014-08-07 11:16

@易之名: 

不好意思,我搞错了。应该是:

son类本身没有test方法呀,它是直接调用father类的。既然你都知道输出是10了,那this当然是指father。除非在son类中你重载father类的test函数.

支持(0) 反对(1) XiaoFaye | 园豆:3082 (老鸟四级) | 2014-08-07 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册