1. 程式人生 > 實用技巧 >JAVA面向物件03

JAVA面向物件03

一·Static關鍵字

  1. 使用staic關鍵字修飾的成員變量表示靜態的含義,此時成員變數由物件層級提升為類層級,也就是整個類只有一份並被所有物件共享,該成員變數隨著類的載入準備就緒,與是否建立物件無關。

  2. static關鍵字修飾的成員可以使用引用.的方式訪問,但推薦類名.的方式。

二·使用方式

  1. 在非靜態成員方法中既能訪問非靜態的成員又能訪問靜態成員。

    (成員:成員變數+成員方法,靜態成員被所有物件共享共享)

  2. 在靜態成員方法中只能訪問靜態成員不能訪問非靜態成員。

    (成員:成員變數 + 成員方法, 因為此時可能還沒有建立物件)

  3. 在以後的開發中只有隸屬於類層級並被所有物件共享的內容才可以使用

    static關鍵字修飾。(不能濫用static關鍵字)

三·構造塊和靜態程式碼塊

  1. 構造塊在類體中直接使用{}括起來的程式碼塊。

  2. 每建立一個物件都會執行一次構造塊。

  3. 靜態程式碼塊:使用static關鍵字修飾的構造塊。

  4. 靜態類的程式碼塊,隨著類的載入時執行一次。

四·單例設計模式:

  在某些特殊場合中,一個類對外提供且只提供一個物件時,這樣的類叫做單例類,而設計單例的流程和思想叫做單例設計模式。

  單例模式的實現流程

  1. 私有化構造方法

  2. 宣告本類型別的引用指向本類型別的物件,使用private static關鍵字共同修飾

  3. 提供公有的get方法,負責將物件返回出去,並使用public static關鍵字共同修飾。

  

public class Singleton {
    
    // 2.宣告本類型別的引用指向本類型別的物件,使用private static關鍵字共同修飾
    //private static Singleton sin = new Singleton();  // 餓漢式
    private static Singleton sin = null;               // 懶漢式
    
    // 1.私有化構造方法,使用private關鍵字修飾
    private Singleton() {}
    
    // 3.提供公有的get方法負責將物件返回出去,使用public static關鍵字共同修飾
public static Singleton getInstance() { //return sin; if(null == sin) { sin = new Singleton(); } return sin; } }
public class SingletonTest {
    
    public static void main(String[] args) {
        
        // 1.宣告Singleton型別的引用指向該型別的物件
        //Singleton s1 = new Singleton();
        //Singleton s2 = new Singleton();
        //System.out.println(s1 == s2); // 比較變數s1的數值是否與變數s2的數值相等  false
        //Singleton.sin = null;  可以使得引用變數無效
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1 == s2); // true
    }
}

五·繼承

  1. 當多個類之間有相同的特徵和行為時,可以將相同的內容提取出來組成一個公共類,讓多個類吸收公共類中已有的特徵和行為而在多個型別只需要編寫出自己獨有的特徵和行為機制,叫做繼承。

  1. java語言中使用extends關鍵字來表示繼承。

  1. 繼承的特點:子類不能繼承父類的構造方法和私有方法,但是私有的成員變數可以被繼承,只是不能直接訪問。

  1. 無論使用何種方式構造子類的物件時都會自動呼叫父類的無參構造方法,來初始化從父類中繼承的成員變數,相當於在構造方法的第一行增加程式碼super()的效果。

  1. 使用繼承必須滿足邏輯關係 子類 is a 父類,也就是不能濫用繼承。

  1. java語言只支援單繼承不支援多繼承。

六·方法重寫

  1. 從父類中繼承下來的方法不滿足子類的需求時,就需要在子類中重新寫 一個和父類一樣的方法來覆蓋從父類中繼承下來的版本,該方式就叫做 方法的重寫(Override)。

  1. 要求方法名相同,引數列表相同以及返回值型別相同,從java5開始允許返回子類型別。

  1. 要求方法的訪問許可權不能變小,可以相同或者變大。

  1. 不能丟擲更大的異常。

當多個類之間有相同的特徵和行為時,可以將相同的內容提取出來組成一個公共類,讓多個類吸收公共類中已有的特徵和行為而在多個型別只需要編寫出自己獨有的特徵和行為機制,叫做繼承。