为了账号安全,请及时绑定邮箱和手机立即绑定

关于Thread类的getName()

这里为什么是Thread.currentTread().getName()。前面章节演员类是直接getName()的。

这里为什么不直接写System.out.println(getName()+"开始了战斗").

正在回答

2 回答

其实就是this.getName();这个类是Thread的成员函数,这个方法在Thread中已经实现了,所以在子类中可以直接调用。这两种写法没有本质上的区别,都是指当前对象的xxxx。在实际开发中,加不加this,我没有查到有一种确切结论,更多是个人习惯吧。不过貌似在访问当前对象的属性(变量)的时候一般多用this;而在对象内部调用非静态方法时不用this,直接用函数名调用。

0 回复 有任何疑惑可以回复我~

因为getName()是Thread类的方法。在关键先生这一节中,军队的线程是使用Runnable接口实现的,Runnable接口中没有getName()这个方法,所以要使用currentThread()返回一个当前线程去调用getName()方法。至于在使用extends Thread实现的线程中,使用Thread.currentThread().getName()和getName()是一样的。作者在这一节都使用Thread.currentThread.getName()应该是为了代码一致吧。

2 回复 有任何疑惑可以回复我~
#1

慕斯卡4106679 提问者

还有个问题,这里怎么是直接getName()调用方法,一般调用方法是对象点方法,静态方法则是类点方法,这里前面没有对象,请问这个是一个怎么样的调用方法的形式
2015-12-01 回复 有任何疑惑可以回复我~
#2

收拾好鑫情 回复 慕斯卡4106679 提问者

Thread子类的getName()方法是从Thread中继承过来的,由于Thread中的getName方法是final类型的,所以Thread子类不能对该方法进行覆盖。this.getName()中this表示本类,super表示父类,一般this可以忽略,只是某些时候如果子类覆盖了父类中方法,用this.getName(),super.getName()代码上更清晰。这里不能覆盖,所以this.getName(),super.getName(),getName()都一样,我是这样理解的。
2016-01-07 回复 有任何疑惑可以回复我~
#3

慕斯卡4106679 提问者 回复 收拾好鑫情

谢谢了
2016-01-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于Thread类的getName()

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信