先来看一串代码:
public class Person{
String name; //人的姓名
int age; //人的年龄
}
var P = new Person(); //相当于Person P = new Person(); P.name = "特朗普" P.age = 82;
这样输出并没有问题 但如果用户乱搞:
P.age = 12000;
显然特朗普就算成了精也不可能活这么久。 为了避免出现这种情况,我们就用到了封装
封装就是把数据和方法封装在一起,数据被保护在内部,用户只能根据程序员所允许的操作进行操作。 如果把数据和方法看作游戏,那么玩家只能按照规则进行游玩,而游戏作者可以为所欲为。
实现封装:
public class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
var P = new Person(); P.age = 12000;//错误写法!!!有了private关键字只能通过GetXxx与SetXxx进行输入输出 P.setAge(12000); //输入年龄 System.out.println(P.getAge()); //输出年龄
看到这你可能会有疑问,这输入12000系统照样能输出,有什么意义吗? 别忘了,我们有Get方法,而方法里是可以有选择结构的.
public class Person {
private int age;
public void setAge(int age) {
this.age = age;
}
public int getAge() {
if (age < 0 || age > 150) {
return -1;
}
return age;
}
var P = new Person(); P.setAge (12000); System.out.println (P.getAge()); //输出-1 ========================================================== P.setAge (82); System.out.println (P.getAge()); //输出82



