封 裝
封裝是面向對象編程(OOP)的三大特性之一,它將數據和操作數據的方法組合在一個單元內部,并對外部隱藏其具體實現細節。在Java中,封裝是通過類的訪問控制修飾符(如 private、protected、public
)和訪問方法(getter 和 setter)來實現的。
訪問控制修飾符
在Java中,類的成員可以使用不同的訪問控制修飾符來控制其可見性。
private:只有同一個類內部的方法可以訪問。
default(包級訪問):同一個包內的類可以訪問。
protected:同一個包內的類以及不同包中的子類可以訪問。
public:任何類都可以訪問。
Getter 和 Setter 方法
這些方法用于在類外部訪問和修改類的私有屬性。Getter 方法用于獲取屬性的值,Setter 方法用于設置屬性的值。它們通常是公有方法,允許外部代碼通過方法來訪問屬性,而不需要直接訪問屬性本身。
封裝的優點
-
數據隱藏: 封裝隱藏了類的內部實現細節,防止外部代碼直接訪問和修改數據,從而提高了數據的安全性。
-
代碼靈活性: 封裝使得類的內部結構可以更改,而不影響外部代碼的使用。
-
代碼重用: 封裝提供了接口來訪問類的功能,使得其他代碼可以重用類的功能而不需要了解內部實現細節。
封裝的實現:
封裝通過將類的成員聲明為私有(private)來實現,然后通過公有(public)的 Getter 和 Setter 方法來提供對這些成員的訪問和修改。
封裝的應用場景:
封裝在軟件設計中的應用廣泛,尤其適用于隱藏內部細節、提供良好的接口、確保數據安全性等場景。它有助于構建模塊化、易于維護的代碼。
不變性: 封裝可以用于創建不變類(Immutable Class),即類的實例一旦創建就不能被修改,只能通過構造函數來初始化。
遮蔽(Shadowing)
是指一個作用域中使用了一個和外層作用域相同的變量名,導致局部變量“遮蔽”了外部變量,即無法直接訪問外部變量
局部變量遮蔽成員變量
this關鍵字
this關鍵字更詳細講解點擊這里
代表當前對象可以用于以下幾個方面:
-
引用當前對象的成員方法
-
引用當前對象的成員變量
-
調用當前對象的構造方法
this只能在類的實例方法、實例初始化和構造方法中使用。不能在靜態方法中使用。
總結
- 引用當前對象:
在類的非靜態方法中,this 引用當前對象,即調用該方法的對象實例。
- 訪問實例變量:
在類的方法中,可以使用 this 來訪問當前對象的實例變量。
- 調用構造方法:
在一個構造方法內部,可以使用 this() 調用當前類的其他構造方法,實現代碼的復用。
- 避免方法參數與實例變量同名:
當方法的參數名與實例變量同名時,可以使用 this 關鍵字來區分引用的是實例變量還是方法參數。
- 在構造方法中調用其他構造方法:
使用 this() 在構造方法中調用其他構造方法,以減少代碼冗余。
- 在匿名內部類中:
在匿名內部類中,如果需要引用外部類的實例,可以使用 外部類名.this。
- 在靜態方法中的限制:
this 不能在靜態方法中使用,因為靜態方法與特定對象實例無關。
- 構造方法中的 this 和 super 的關系:
構造方法中的 this() 和 super() 不能同時使用,因為它們都必須作為構造方法的第一行。