1 重点掌握
1.1 本节摘要
编写只包含静态方法和静态域的类,需要通过私有构造器强化不可实例化的能力
1.2 使用私有构造器的弊端
使得一个类不能被子类化。所有构造器必须显示或隐式调用超类构造器。子类没有可访问的超类构造器访问。参考3.2
1.3 本节demo 3.1
2 课程内容
2.1 使只有静态方法的类不可实例化的其他方法及不可行原因
方法:
将该类做成抽象类
不可行原因:
- 该类可以被子类化,子类同样能够实例化
- 让用户误解专门是为了继承而设计的该类
3 代码演练
3.1 通过私有构造器强化不可实例化的能力Demo
package com.ddwei.test.core.chapter4; /** * 该类只有静态方法或静态域 */ public class StaticUtilClass { private StaticUtilClass(){ //防止在本类内部不小心实例化,以确保任何时候都不会被实例化 throw new AssertionError(); } public static void method1(){ } }
3.2 私有构造器弊端Demo
父类:
package com.ddwei.test.core.chapter4; public class StaticParentUtilClass { }
子类:
package com.ddwei.test.core.chapter4; /** * 该类只有静态方法或静态域 */ public class StaticUtilClass extends StaticParentUtilClass{ private StaticUtilClass(){ //防止在本类内部不小心实例化,以确保任何时候都不会被实例化 throw new AssertionError(); } public static void method1(){ } }
Test类
诸葛