下面程序中Soup.access().f();代表什么意思啊 !!!

waveblue 2003-05-25 10:10:07
class Soup {
private Soup() {}
// (1) Allow creation via static method:
public static Soup makeSoup() {
return new Soup();
}
// (2) Create a static object and
// return a reference upon request.
// (The "Singleton" pattern):
private static Soup ps1 = new Soup();
public static Soup access() {
return ps1;
}
public void f() {}
}

class Sandwich { // Uses Lunch
void f() { new Lunch(); }
}
// Only one public class allowed per file:
public class Lunch {
void test() {
// Can't do this! Private constructor:
//! Soup priv1 = new Soup();
Soup priv2 = Soup.makeSoup();
Sandwich f1 = new Sandwich();
Soup.access().f();
}
} ///:~
...全文
30 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
seven1996 2003-05-26
  • 打赏
  • 举报
回复
不能Soup priv1 = new Soup();
因为构造函数是私有方法
private static Soup ps1 = new Soup();
通过public static Soup access() {
return ps1;
}
实际上等于调用了一次构造函数
Soup.access()返回的是Soup的一个对象
f();是Soup的一个非私有方法。用Soup的一个对象调用它在正常不过了
就成了Soup.access().f();
cxjlw 2003-05-25
  • 打赏
  • 举报
回复
public static Soup access() {
return ps1;
}
说明access是一个静态方法,所以应该用类名直接调用。
而且, access()返回一个Soup对象,所以可以访问类方法f.

62,614

社区成员

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

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