日期:2014-05-20  浏览次数:20667 次

第七行getName()前面没有对象?不通过对象怎么可以调用方法?很不理解


public class TestJoin extends Thread {
   public TestJoin(String name){
 super(name);
 }
 public void run(){
 for(int i=0;i<5;i++){
 System.out.println(getName()+i);//第七行
}
 }
public static void main(String[] args) {
  
 for(int i=0;i<10;i++){
 if(i==5){
 //实例化JoinTest线程对象
Thread tj=new TestJoin("半路杀出线程"+i);
 tj.start();
 try {
 tj.join();
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 }
 System.out.println(Thread.currentThread().getName()+i);
 }
 

------解决方案--------------------
有一种叫this的东西!

------解决方案--------------------
引用:
Quote: 引用:

方法前没有对象的时候默认就是 this 了,this是只这个对象本身的方法,在楼主定义的类中本身是没有这个方法的,所以这个时候就会到它的父类中去寻找这个方法,所以楼主调用的这个方法就是Thread类的getName()方法了。
原来这样,方法前没有对象就默认是用了this呀。。那我们平时写当前类对象的方法时可以在方法名前不加this,这样不就更方便了吗??那为什么还要用this.方法名()?直接方法名()不更好


在当前类中调用本类的方法当然不用写this啦,是不是更好那倒没有这种说法,个人习惯而已吧,我一般就不写!
------解决方案--------------------
调用父亲的方法啦,父亲有的儿子就有,所以儿子可以直接还不客气拿来用!!!