您好,登錄后才能下訂單哦!
好程序員大數據實用教程之面向對象進階:包的創建與使用
是對一個程序中指定功能的部分代碼進行包裝
####構造方法
是一個方法
特殊點:
- 構造方法沒有返回值,不是指的返回值類型是void,而是根本就不寫返回值類型
- 方法名字和類名相同
- 構造方法不能用static來修飾
構造方法調用的時機:
- 通俗來講:是在實例化一個對象的時候調用的
一般情況下,我們在構造方法中做什么:
- 對對象的某一些屬性進行初始化賦值操作
實例化對象的過程:
Person xiaoming = new Person();
new : 表示在堆上開辟空間
執行非靜態代碼段
然后再執行構造方法:
在構造方法中調用其他的構造方法
可以使用this()的方式來調用其他的構造方法
注意事項:
- this() 必須寫在構造方法的第一行
- 不能循環調用
無參構造方法需要注意的問題
- 如果一個類中沒有寫構造方法,此時這個類具有一個默認的public權限的無參構造方法
- 如果一個類中寫構造方法了,此時這個默認的public權限的無參構造方法將不再提供
非靜態代碼段
靜態代碼段
static { } // 當這個類第一次被加載到內存中的時候執行 // 當你第一次使用這個類的時候執行(實例化對象、調用靜態方法...)
是一種編程思想:
狹義上的封裝:
? 一個類中的某一些屬性,我們不希望外界直接訪問。(外界賦的值可能不是我們想要的值)。此時,我們可以將這個屬性私有化(private),杜絕了外界直接訪問這個屬性的可能性。但是我們還需要再去提供用來訪問這個屬性的方法。(設置值、獲取值)(setter/getter)
private:
? 是訪問權限修飾符的其中之一,可以用來修飾屬性和方法。被private修飾的成員,只能夠在當前的類中訪問
單例設計模式
設計模式:
? 是前人總結出來的,用來解決特定問題的一個解決方案。
單例設計模式:
? 用來解決,在不同的模塊中,我們需要訪問到同一個類的同一個對象。
關于私有化構造方法:
? 其實這個操作,在單例中是不必須的。
餓漢式
/**
* 在這個單例設計的過程中,只要我們用到了這個User類,instance都會實例化
* 此時,instance可能我們并不會使用到。所以會造成一定程度上的性能損耗。
*/
class User {
// 聲明一個私有的、靜態的、當前類的對象,并實例化
// 因為這個instance是靜態的,實例化的過程只會執行一次
private static User instance = new User();
// 提供一個public權限的、靜態的、返回當前類對象的方法
public static User getUser() {
// 將剛才實例化的instance返回,因為這個instance只會實例化一次,所以無論這個方法執行多少次,最終返回的結果都是同一個對象
return instance;
}
}
懶漢式
/**
* 使用的時候再去實例化instance,沒有多余的資源浪費
* 這種方式,在多線程環境中有問題
*/
class User {
// 聲明一個私有的、靜態的、當前類的對象,不對他進行實例化
// 什么時候需要獲取這個對象的時候,再去實例化
private static User instance;
// 提供一個public權限的、靜態的、返回當前類對象的方法
public static User getUser() {
// 在使用的時候,判斷instance是不是null, 如果是,對他做實例化,如果不是,直接使用即可
if (instance == null)
instance = new User();
return instance;
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。