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)
//省略代码
}
}