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 成员——即使它们不能创建属于那个类的一个对象。
相关文章推荐
- eclipse的两个不同程序并排摆放,便于查看
- Java基础之异常篇
- 从零开始创建一个简单的springMVC工程(包含一些异常的解决方法)
- Java中的异常
- JavaWeb开发之十二:JSP九大内置对象
- 搭建spring开发环境
- 【JAVA】43、编写一个简易录入系统
- JavaWeb开发之十一:JSP基础语法
- 【JAVA】42、实例讲解——类设计分析
- Retrofit结合RxJava使用说明
- 20145227 《Java程序设计》第3周学习总结
- [置顶] Java 图形界面开发--图文并茂建立学生管理系统
- Java 图形界面开发--图文并茂建立学生管理系统
- java学习笔记(一)
- 【Java算法学习笔记】数组元素循环右移问题
- Java中用中文命名
- Java虚拟机
- JavaWeb开发之十:JSP运行原理与基础
- 关于使用eclipse的事
- JavaWeb开发之九:session技术