1.封裝除了能把大量代碼抽象以外,也是減少內部屬性被實例化後,可以在外部直接進行修改。
舉個例子 定義1個wuxia類,wuxia類下面有1個類屬性,是1個int類型的is_join,is_join的數據定義了武俠世界裏的人物是否出世。如果出世了,就可以在世界裏的劇情,任務,副本等地方可以使用到他。
public class Wuxia
{
int is_join =0; //is_join status:0 未出世 1出世 2已死亡 3 已退隱
public static void main(String[] args){
Wuxia wx =new Wuxia()
wx.is_join =1;
System.out.println("is_join當前狀態是"+wx.is_join)
//省略代碼
}
}
可是如果直接寫成上面的,很容易被實例化的類.引用類屬性 並且修改了數值(主要擔心被修改成了超過3的,比如4,那後面邏輯就錯了,請看is_join的註釋)。那麼如何讓這個屬性安全點,也是一樣的,一個get,一個用set思想,get獲取不修改,set會進行修改。
public class Wuxia
{
private int is_join =0; //is_join status:0 未出世 1出世 2已死亡 3 已退隱
public void joined(){
if(is_join=0){
System.out.println("角色未出世"+"還無法獲得")
}
else if(is_join=1){
System.out.println("角色已出世"+"在遊戲內可見")
//加1個讀取數據庫的方法就可以判斷自己有沒有。這個是高級後延伸寫的
}
else if(is_join=2){
System.out.println("角色已死亡"+"在遊戲內不可見了")
}
//...其他3和3以外的省略
}
//將你的實例變量標記爲私有的,並提供公有的getter與setter來控制存取動作
public int getIs_join(){
return is_join;
}
public void setIs_join(int join){
if(s<4){ //超過3 就使用默認的is_join=0
is_join =join;
}
}
public static void main(String[] args){
Wuxia wx =new Wuxia();
wx.is_join =1;
System.out.println("is_join當前狀態是"+wx.is_join)
//省略代碼
}
}