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类

 

posted on 2022-04-29 22:00  菜鸟乙  阅读(24)  评论(0编辑  收藏  举报