欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java连载52-单例模式的缺点以及抽象类

程序员文章站 2023-11-14 09:22:04
一、单例模式 1.单例模式的缺点:单例模式的类型没有子类,无法被继承。 例如:下面的例子,由于父类的构造方法是私有的,所以子类中的构造方法是无法创建的,因为它是引用父类的构造方法 package com.bjpowernode.java_learning; ​ public class D52_1_ ......

一、单例模式

1.单例模式的缺点:单例模式的类型没有子类,无法被继承。

例如:下面的例子,由于父类的构造方法是私有的,所以子类中的构造方法是无法创建的,因为它是引用父类的构造方法

 

package com.bjpowernode.java_learning;

​

public class d52_1_ {

  public static void main(string[] args) {

    httpservlet52 h1 = new httpservlet52();

  }

}

class servlet52{

  private servlet52() {}

}

class httpservlet52 extends servlet52{

 

}

Java连载52-单例模式的缺点以及抽象类

二、抽象类

1.如何定义抽象类

class关键字前面加上abstract

2.抽象类无法被实例化

3.虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是​给子类创建对象用的。

4.抽象类中可以定义抽象方法

抽象方法的​语法:

在方法的修饰符列表中添加abstract关键字,并且抽象方法应该以“;“结束,不能带有"{}",例如​:public abstract void m1();

5.抽象类中不一定有抽象方法,但是抽象方法必须出现在抽象类中,因此继承抽象类的子类中必须将父类中的抽象方法覆盖(如果有抽象方法的话)

6.一个非抽象的类继承抽象类,必须将抽象类中的抽象方法进行覆盖,实现,重写​。

 

package com.bjpowernode.java_learning;

​

public abstract class d52_2_abstractclass {

​

  //constructor

  d52_2_abstractclass(){

    system.out.println("a......");

  }

 

  public abstract void m1();//抽象方法

 

  public static void main(string[] args) {

    d52_2_abstractclass d1 = new b52();

  }

}

​

class b52 extends d52_2_abstractclass{

  b52(){

    //这里省略了super(),实际上默认是有的,父类的构造方法虽然调用了,但是并没有创建父类对象。

    system.out.println("b......");

  }

  public void m1() {};

}

​

Java连载52-单例模式的缺点以及抽象类

五、源码:

d52_1_singlemode.java

d52_2_abstractclass.java

地址:

https://github.com/ruigege66/java/blob/master/d52_1_singlemode.java

https://github.com/ruigege66/java/blob/master/d52_2_abstractclass.java

2.csdn:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

 Java连载52-单例模式的缺点以及抽象类