class A{
 String name;
 public A(String x){
  name=x;
  }
 public void func1(){
  System.out.println("function1 of "+name+" is calling");
   }
 public void func2(){
   A a2=new A("a2");
   a2.func1();
    this.func1();//这里的this 改成 a1 为啥不行。?
   }
}
class TestA{
 public static void main(String[] args){
  A a1=new A("a1");
  a1.func2();
  }
}

解决方案 »

  1.   

     this.func1();//这里的this 改成 a1 为啥不行。?你的al是在 另一个类 TestA中的main方法中定义的, 作用范围的问题啊。。
      

  2.   

    this指的是当前类的对象. a2不再本类
      

  3.   

     TestA中的main方法中a1.func1();是可以的
      

  4.   

    如果是今天刚知道this的,不需要今天弄的很明白,多写几个例子第二天会很透彻的。
      

  5.   

    在你写的那个地方他不认识a1!如果你把测试类,换成   A a3=new A("a3");,然后其他不变的话,问题就显现出来拉.
    当你A a1 =new A("a1");的时候,
    在类a1的外面调用a1.func1();
    在类a1的里面调用只能用this.func1();class A(){}只是一个壳.