溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

好程序員大數(shù)據(jù)實用教程之面向?qū)ο筮M階

發(fā)布時間:2020-06-12 04:34:53 來源:網(wǎng)絡(luò) 閱讀:217 作者:wx5da18b5c4b01e 欄目:編程語言

好程序員大數(shù)據(jù)實用教程之面向?qū)ο筮M階:包的創(chuàng)建與使用

是對一個程序中指定功能的部分代碼進行包裝

####構(gòu)造方法

是一個方法

特殊點:

  1. 構(gòu)造方法沒有返回值,不是指的返回值類型是void,而是根本就不寫返回值類型
  2. 方法名字和類名相同
  3. 構(gòu)造方法不能用static來修飾

構(gòu)造方法調(diào)用的時機:

  1. 通俗來講:是在實例化一個對象的時候調(diào)用的

一般情況下,我們在構(gòu)造方法中做什么:

  1. 對對象的某一些屬性進行初始化賦值操作

實例化對象的過程:

Person xiaoming = new Person();

new : 表示在堆上開辟空間

執(zhí)行非靜態(tài)代碼段

然后再執(zhí)行構(gòu)造方法:

在構(gòu)造方法中調(diào)用其他的構(gòu)造方法

可以使用this()的方式來調(diào)用其他的構(gòu)造方法

注意事項:

  1. this() 必須寫在構(gòu)造方法的第一行
  2. 不能循環(huán)調(diào)用

無參構(gòu)造方法需要注意的問題

  1. 如果一個類中沒有寫構(gòu)造方法,此時這個類具有一個默認的public權(quán)限的無參構(gòu)造方法
  2. 如果一個類中寫構(gòu)造方法了,此時這個默認的public權(quán)限的無參構(gòu)造方法將不再提供
代碼塊

非靜態(tài)代碼段

靜態(tài)代碼段

static {

}
// 當這個類第一次被加載到內(nèi)存中的時候執(zhí)行
// 當你第一次使用這個類的時候執(zhí)行(實例化對象、調(diào)用靜態(tài)方法...)
private關(guān)鍵字與屬性封裝

是一種編程思想:

狹義上的封裝:

? 一個類中的某一些屬性,我們不希望外界直接訪問。(外界賦的值可能不是我們想要的值)。此時,我們可以將這個屬性私有化(private),杜絕了外界直接訪問這個屬性的可能性。但是我們還需要再去提供用來訪問這個屬性的方法。(設(shè)置值、獲取值)(setter/getter)

private:

? 是訪問權(quán)限修飾符的其中之一,可以用來修飾屬性和方法。被private修飾的成員,只能夠在當前的類中訪問

單例設(shè)計模式

設(shè)計模式:

? 是前人總結(jié)出來的,用來解決特定問題的一個解決方案。

單例設(shè)計模式:

? 用來解決,在不同的模塊中,我們需要訪問到同一個類的同一個對象。

關(guān)于私有化構(gòu)造方法:

? 其實這個操作,在單例中是不必須的。

  1. 餓漢式

    /**
    * 在這個單例設(shè)計的過程中,只要我們用到了這個User類,instance都會實例化
    * 此時,instance可能我們并不會使用到。所以會造成一定程度上的性能損耗。
    */
    class User {
       // 聲明一個私有的、靜態(tài)的、當前類的對象,并實例化
       // 因為這個instance是靜態(tài)的,實例化的過程只會執(zhí)行一次
       private static User instance = new User();
       // 提供一個public權(quán)限的、靜態(tài)的、返回當前類對象的方法
       public static User getUser() {
           // 將剛才實例化的instance返回,因為這個instance只會實例化一次,所以無論這個方法執(zhí)行多少次,最終返回的結(jié)果都是同一個對象
           return instance;
       }
    }
  2. 懶漢式

    /**
    * 使用的時候再去實例化instance,沒有多余的資源浪費
    * 這種方式,在多線程環(huán)境中有問題
    */
    class User {
       // 聲明一個私有的、靜態(tài)的、當前類的對象,不對他進行實例化
       // 什么時候需要獲取這個對象的時候,再去實例化
       private static User instance;
       // 提供一個public權(quán)限的、靜態(tài)的、返回當前類對象的方法
       public static User getUser() {
           // 在使用的時候,判斷instance是不是null, 如果是,對他做實例化,如果不是,直接使用即可
           if (instance == null)
               instance = new User();
    
           return instance;
       }
    }
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI