关于this

this是指当前类的实例对象

 

 1 public class A {
 2     public void init()
 3     {
 4         System.out.println("1、A init");
 5         this.dosomething();
 6     }
 7        
 8     public void dosomething()
 9     {
10         System.out.println("2、A dosomething");
11     }
12 }
 1 public class B  extends A{
 2     public void init()
 3     {
 4         System.out.println("3、B init");
 5         super.init();
 6     }
 7        
 8     public void dosomething()
 9     {
10         System.out.println("4、B dosomething");
11     }
12        
13     public static void main(String[] args) {
14         B b=new B();
15         b.init();    
16     }

为什么会是这个结果??

这是因为如果是无参函数,那么有一个默认的参数是this,也就是类的实例对象

    super.init(),实际是super.init(b)

那么

    在类A中this.dosomething,就是A.dosomething(),所以结果就是3 1 4

public String name="tom";
    public void init()
    {
        System.out.println(this.name);
    }
public String name="jack";
    public void init()
    {  
        super.init();
        System.out.println(this.name);
    }
 
    public static void main(String[] args) {
        B1 b=new B1();
        b.init();  
         
        System.out.println(b.name);
         
        A1 a=new B1();
        a.init();  
         
        System.out.println(a.name);
    }

这里的运行结果为什么又不符合上面说的默认参数是一个this的实例对象呢?

这是因为:

成员变量编译运行看左面

成员方法编译看左面,运行看右面

posted @ 2014-11-06 17:28  liuwt365  阅读(158)  评论(0编辑  收藏  举报