Thinking:类访问笔记

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

以下是TIJ中的代码:

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();

}

}

------------ 返回值是Soup的对象引用。这里这个类是一个自引用的类,JDK中util包中如LinkedList之类就是这样实现的。access是一个静态方法,所以应该用类名直接调用。

而且,access()返回一个Soup对象,所以可以访问类方法f.

不能Soup priv1 = new Soup();

因为构造函数是私有方法

通过public static Soup access() {

return ps1;

}

实际上等于调用了一次构造函数

Soup.access()返回的是Soup的一个对象,f()是Soup的一个非私有方法,用Soup的一个对象调用它在正常不过了

所以:Soup.access().f();

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航