class A{
public synchronized void say1(){
System.out.println("say1111111");
}
public synchronized void say2(){
System.out.println("say2222222");
}
}
class B{
public A a ;
B(A a){
this.a = a;
}
a.say1();//为何这里编译不能通过?

}
已经声明了为何不能调用A的方法?
如果  new A().say1()就行?求解释!!

解决方案 »

  1.   

    a只是一个引用,不是对象,没new怎么有方法可以调用!
      

  2.   

    如果你 public A a ; 只是在内存中给a分配了一个地址,这时它还不是对象,如果写成
     A a = new A(); 就可以了  这时a就是A类的对象了
      

  3.   

     new A().say1() 是用的一个匿名对象的say1方法 所以可以
      

  4.   

    a.say1();//为何这里编译不能通过?a.say1();不能写在class里面,必须写到语句块或方法中。
    如果 new A().say1()就行?求解释!!
    没看明白是啥意思,如果是用new A().say1()替换a.say1(),也是编译不通过的,这是java的语法决定的。