您的位置:首页 > 编程语言 > Java开发

Java面对对象入门

2016-03-19 20:26 459 查看

源码:

class Soup {
private Soup() {
System.out.println("Soup Constructor..");
}
// (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() {
System.out.println("Soup.f()");
}
}

class Sandwich {
void f() {
System.out.println("Sandwich.f()");
new Lunch();
}
}

// (3) Only one public class allowed per file
public class Lunch {

public static void main(String[] args) {
// (4) Cant't do this! Private constructor :
//! Soup priv1 = new Soup();
Soup priv2 = Soup.makeSoup();
Sandwich f1 = new Sandwich();
// (5) 类名.静态方法(返回类对象).类方法
Soup.access().f();
}
}


运行结果:



(1)通过静态方法 makeSoup() 来访问 Soup 类的构造函数;
创建一个static 方法,再通过它创建一个新的Soup,然后返回指向它的一个句柄。如果想在返回之前对Soup 进行一些额外的操作,或者想了解准备创建多少个Soup 对象(可能是为了限制它们的个数),这种方案无疑是特别有用的。

(2)方法 access 返回指向一个对象的句柄,它指向类Soup 的一个对象;
采用了 “单例” 模式,它仅允许创建一个对象。类Soup 的对象被创建成Soup 的一个static private 成员,所以有一个而且只能有一个。除非通过public 方法access(),否则根本无法访问它。
(*)如果不针对类的访问设置一个访问指示符,那么它会自动默认为“友好的”。这意味着那个类的对象可由包内的其他类创建,但不能由包外创建。请记住,对于相同目录内的所有文件,如果没有明确地进行package 声明,那么它们都默认为那个目录的默认包的一部分。然而,假若那个类一个static成员的属性是public,那么客户程序员仍然能够访问那个static 成员——即使它们不能创建属于那个类的一个对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: