Effective Java笔记第一章创建和销毁对象第四节通过私有构造器强化不可实例化的能力
程序员文章站
2022-06-28 16:30:41
Effective Java笔记第一章创建和销毁对象第四节通过私有构造器强化不可实例化的能力1.很多工具类不希望被实例化,实例对他没有任何意义。在缺少显式构造器的情况下,编译器会自动提供一个公有的,无参的缺省构造器(default constructor).2.企图通过将类做成抽象类来强制该类不可被实例化,这是行不通的。该类可以被子类化,并且该子类可以被实例化。......
Effective Java笔记第一章创建和销毁对象
第四节通过私有构造器强化不可实例化的能力
1.很多工具类不希望被实例化,实例对他没有任何意义。在缺少显式构造器的情况下,编译器会自动提供一个公有的,无参的缺省构造器(default constructor).
2.企图通过将类做成抽象类来强制该类不可被实例化,这是行不通的。该类可以被子类化,并且该子类可以被实例化。
抽象父类:
public abstract class DemoAbstract {
public void test(){
System.out.println(111111);
}
}
子类:
public class DemoAbstractSon extends DemoAbstract {
@Override
public void test() {
super.test();
System.out.println(222222);
}
}
测试:
public class Demo2 {
public static void main(String[] args) {
//抽象类不可以实例化
// DemoAbstract demoAbstract = new DemoAbstract();
//可以通过创建子类来获得父类对象,调用父类的方法
DemoAbstract abstractSon = new DemoAbstractSon();
abstractSon.test();
}
}
3.我们可以让类只包含私有构造器。
public class DemoPrivate {
//私有构造器,不可以被实例化和被继承
private DemoPrivate(){
//避免在类的内部调用构造器
throw new AssertionError();
}
public void test(){
System.out.println(111111);
}
public static void main(String[] args) {
//会爆AssertionError错误
DemoPrivate demoPrivate = new DemoPrivate();
System.out.println(demoPrivate);
}
}
本文地址:https://blog.csdn.net/zh123456_789/article/details/111599182
上一篇: 姜太公是怎么治理封地的?他将一生的智慧写成了什么书?
下一篇: java8(异步编程之Future)