1、封装的概念
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2、封装的两个大致原则
-
把尽可能多的东西藏起来,对外提供便捷的接口
-
把所有的属性藏起来
3、如何实现封装
1)修改属性的可见性
2)创建公有的getter/setter方法
3)在getter/setter方法中键入属性控制语句
示例:创建Penguin类和PenguinTest测试类
public class Penguin {
// 定义属性
private String name;
private int health;
private int love;
public Penguin() {
}
public Penguin(String name, int health, int love) {
this.name = name;
this.health = health;
this.love = love;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setHealth(int health){
//调用此方法来给对象的health赋值,在赋值前对传过来的health进行判断
if(health<0||health>100){
System.out.println("您输入的健康值有误,默认给健康值赋值为60");
this.health = 60;
return;//这里的return作用是结束方法后续代码的执行
}
this.health =health;
}
public int getHealth(){
return health;
}
public void setLove(int love){
//对传递过来的love值进行判断
if(love<0||love>100){
System.out.println("您输入的亲密度值有误,默认给亲密度赋值为80");
this.love=80;
return;
}
this.love=love;
}
public int getLove(){
return love;
}
public class PenguinTest {
public static void main(String[] args) {
// 使用无参构造方法创建Penguin类的对象
Penguin penguin1 = new Penguin();
// 给对象penguin1的属性赋值,因为name属性使用private修饰了,所以不能同对象名.属性名直接给name属性赋值,只能是用其它方式给name属性赋值
// penguin1.name = "QQ";
// System.out.println(penguin1.name);
penguin1.setName("QQ");
String name =penguin1.getName();
System.out.println(name);
penguin1.setHealth(-90);
System.out.println(penguin1.getHealth());
penguin1.setLove(-99);
System.out.println(penguin1.getLove());
}