黑马程序员技术交流社区
标题:
抽象类和把类中构造函数私有的区别?
[打印本页]
作者:
ixiangfeng
时间:
2014-1-2 13:52
标题:
抽象类和把类中构造函数私有的区别?
突然想到个问题:为了不让类创建对象,那么可以把它的构造函数私有化,而如果把这个类写成抽象类,里面没有抽象方法。那么这两者之前有什么异同?
作者:
午夜b'Boy
时间:
2014-1-3 18:53
构造函数私有化后,你为他添加一个子类,子类初始化是要调用父类的无参构造方法的,具体是怎样我也不懂
作者:
午夜b'Boy
时间:
2014-1-3 18:58
我发现构造方法私有后,貌似不能有子类了
作者:
快乐的黑马
时间:
2014-1-3 20:33
抽象后强迫子类拥有它的方法。
作者:
李兴
时间:
2014-1-3 21:50
把类的构造函数私有化,可以阻止类的外部使用new关键字创建类的实例
但是该类自己可以创建他的实例并通过一个函数返回,这就是单例设计模式的原理
如下代码可以获得
public class DemoA {
public static void main(String[] args) {
DemoB p = DemoB.getInstance();
}
}
class DemoB{
private DemoB(){}
private static DemoB p = new DemoB();
public static DemoB getInstance(){
return p;
}
}
复制代码
如果把类写成抽象类,那么不管是类的外部,还是类本身都不能创建类的实例了
但是可以创建该类的匿名子类对象
代码如下
public class DemoA {
public static void main(String[] args) {
DemoB p = DemoB.getInstance();
}
}
abstract class DemoB{
private DemoB(){} //该方法不可能被调用
private static DemoB p = new DemoB(){
//自定义代码
};
public static DemoB getInstance(){
return p;
}
}
复制代码
注意p为DemoB的匿名子类实例
这就是两者的区别
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2