Java連載53-單例模式初步、final關鍵字補充、回顧知識點

1、回顧java

1.類和對象的區別node

2.UML(uniform makeup language)git

3.方法區存儲靜態變量、常量(static final修飾)github

4.堆內存中存儲對象設計模式

5.棧存儲變量微信

6.this()可用於構造方法第一行學習

7.static靜態語句塊(JVM中第一次使用類的時候,會進行加載靜態語句塊),還能夠修飾變量和方法大數據

8.設計模式是能夠重複利用的解決方案能夠分爲四類ui

9.類的繼承(單繼承)this

10.方法覆蓋(相同修飾符,相同方法名,相同參數)

11.多態,子類->父類(向上轉型

父類->子類(向下轉換,強制類型轉換)

12.super關鍵字,子類裏面訪問父類的方法

13.super()能夠出如今構造方法第一行,默認自動生成,不會建立父類,只是用來初始化,用來調用父類的構造方法。

14.final關鍵字

15.abstract抽象類

非抽象類調用抽象類,必須將抽象類中的方法覆蓋、重寫

2、深刻final關鍵字

1.抽象類不能夠被final關鍵字修飾(抽象類定義出來就是用來繼承的)

2.fianl修飾的引用類型,該引用不能夠再從新指向其餘的java對象

可是final修飾的引用,該引用指向的對象的屬性是能夠修改的。

 

package com.bjpowernode.java_learning;

​

public class D53_1_FinalKeywordAddition {

  public static void main(String[] args) {

    final Customer53 c1 = new Customer53("Jack",45);

   

//    c1 = new Customer53("liuming",45); //這個語句報錯,這是由於final關鍵字修飾了c1這個變量

//    咱們固然不能再將它進行賦值了,可是下面的對c1中的屬性進行賦值就是能夠的

    c1.name = "jfaolj";

  }

}

​

class Customer53 {

  String name;

  int age;

  Customer53(String name,int age){

    this.name = name;

    this.age = age;

  }

}

 

 

運行不會報錯。

3、設計模式

1.設計模式:能夠重複利用的解決方案

2.設計模式從結構 上能夠分爲三類:建立型、結構型、行爲型

3.單例模式

(1)單例模式是23種設計模式中最簡單的一種設計模式

(2)爲了解決什麼問題呢?

爲了保證JVM中某一個類型的java對象永遠只有一個;爲了節省內存的開銷

(3)實現單例模式的方法

i.構造方法私有化

ii.對外提供一個公開的靜態的獲取當前類型對象的方法

ii.對外提供一個當前類型的靜態變量。

 

package com.bjpowernode.java_learning;

​

public class D53_2_SingletonMode {

  public static void main(String[] args) {

    Singleton53 s1 = Singleton53.getInstance();

    Singleton53 s2 = Singleton53.getInstance();

    System.out.println(s1==s2);//返回結果是true,說明這兩個對象是同一個對象,這就達到了咱們的目的 

  }

}

​

class Singleton53{

  private static Singleton53 s;//這個很關鍵,由於靜態變量是存儲在方法區內存的,這裏的s一旦被賦值了,就不會變了

  //第二次調用這個類不會執行這段語句語句由於第一次調用類以前已經建立,第一次調用類改變了它,就一直不用變了

  //將構造方法私有化

  private Singleton53() { 

   

  }

  //對外提供一個公開獲取Singleton對象的方法

  public static Singleton53 getInstance() {

    if(s==null) {

      s = new Singleton53();

    }

    return s;

  }//這裏必須是靜態方法,若是是實例方法,咱們對象都不能在外面建立,那麼若是調用這個方法呢?

}

4、源碼:

D53_1_FinalKeywordAddition.java

D53_2_SingletonMode.java

地址:

https://github.com/ruigege66/Java/blob/master/D53_1_FinalKeywordAddition.java

https://github.com/ruigege66/Java/blob/master/D53_2_SingletonMode.java

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

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

4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索