小问题求解释!!

叫我小林吧 2012-06-30 04:19:28
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()就行?求解释!!
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
悠忧虫 2012-06-30
  • 打赏
  • 举报
回复
a.say1();//为何这里编译不能通过?

a.say1();不能写在class里面,必须写到语句块或方法中。


如果 new A().say1()就行?求解释!!
没看明白是啥意思,如果是用new A().say1()替换a.say1(),也是编译不通过的,这是java的语法决定的。
外面在下雷 2012-06-30
  • 打赏
  • 举报
回复
new A().say1() 是用的一个匿名对象的say1方法 所以可以
外面在下雷 2012-06-30
  • 打赏
  • 举报
回复
如果你 public A a ; 只是在内存中给a分配了一个地址,这时它还不是对象,如果写成
A a = new A(); 就可以了 这时a就是A类的对象了
tinym87 2012-06-30
  • 打赏
  • 举报
回复
这不是调用不调用的问题,代码语法就不对,代码没有那么写的
hgc0907 2012-06-30
  • 打赏
  • 举报
回复
a只是一个引用,不是对象,没new怎么有方法可以调用!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧