黑马程序员技术交流社区

标题: this.getName的一个问题 [打印本页]

作者: 王瑞    时间: 2013-3-23 14:51
标题: this.getName的一个问题
本帖最后由 王瑞 于 2013-3-23 18:02 编辑
  1. class Test extends Thread
  2. {
  3.         //private String name;
  4.         Test(String name)
  5.         {
  6.                 //this.name = name;
  7.                 super(name);//利用父类中的函数,返回name值。
  8.         }
  9.         public void run()
  10.         {
  11.                 for(int x=0; x<60; x++)
  12.                 {
  13.                         System.out.println(this.getName()+" run..."+x);//这里,Test 明明继承了Thread,而父类中才有getName(),为什么用this.getName()呢?
  14.                                                 //要用也应该用super.getName()吧?想了一会没找到答案,求解!
  15.                                 }
  16.                 }
  17. }
复制代码

作者: 张文星    时间: 2013-3-23 14:54
子类在继承父类的时候可以获得父类的所有公共方法和属性,还有保护型的,在一个包中的话还可以获得友元的。具体参看java基础
作者: 王瑞    时间: 2013-3-23 14:57
张文星 发表于 2013-3-23 14:54
子类在继承父类的时候可以获得父类的所有公共方法和属性,还有保护型的,在一个包中的话还可以获得友元的。 ...

不知道是不是我没学到的,可不可以讲的更详细一点?
作者: 陈原野    时间: 2013-3-23 14:58
既然Test继承了Thread父类,那么他就拥有了父类的GetName()所以在调用本类的方法用this.GetName();
作者: blackcaismine    时间: 2013-3-23 15:00
本帖最后由 blackcaismine 于 2013-3-23 15:08 编辑

thread中的getName是final方法,继承的子类可以直接继承这个方法,所以用this.getName可以直接调用
final方法:不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。
但是即便没有final ,this.getname也可以调用父类的方法,只要子类没有复写的话

作者: 王瑞    时间: 2013-3-23 15:01
blackcaismine 发表于 2013-3-23 15:00
thread中的getName是final方法,继承的子类可以直接继承这个方法,所以用this.getName可以直接调用
final方 ...

意思是如果直接用getName()能行吗?
作者: blackcaismine    时间: 2013-3-23 15:07
直接getname当然可以,他默认会有this.的 即使你不写
作者: 秦久启    时间: 2013-3-23 16:06
当然可以这样写了,因为Test继承了Thread类,所以也就继承了getName()的方法,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2