一、單例模式 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{ }
二、抽象類
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() {}; }
五、源碼:
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.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料