为什么要使用封装?
此处的代码有何缺陷?
Dog d = new Dog();
d.health = -10;//属性随意访问,狗狗的健康值赋值为-10,不合理
如何解决?
使用封装
什么是封装
面向对象三大特征之一—封装
封装的概念
将类中的某些信息隐藏在内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的操作和访问
封装的原则
隐藏对象的属性和实现细节,仅对外公开借口,并且控制访问级别
如何实现封装
封装的好处
降低使用系统的风险,避免错误的属性赋值。降低代码之间的耦合度,提高程序的重用性可维护性。
例如:输入狗狗的健康度,限制为0-100,超过则默认为60.
public class Dog {
private int health;
public void setHealth(int health) {
if(health < 0 || health > 100){ //如果health的值小于0或者超过100,则默认为60
health = 60;
}
this.health = health;
}
public int getHealth() {
return health;
}
}
通过一个测试类来实现输入狗狗的健康值
public static void main(String[] args) {
Dog d = new Dog();
d.setHealth(4396); //输入狗狗的健康值为7酱,呸,4396
System.out.println("狗狗的健康值为:"+d.getHealth());
d.setHealth(50); //输入狗狗的健康值为50
System.out.println("狗狗的健康值为:"+d.getHealth());
}
结果: