Java面对对象入门

源码:

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 成员——即使它们不能创建属于那个类的一个对象。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值