就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(方法)才能对数据进行调用
(对电视机的操作就是典型的封装)
2.封装的好处1)隐藏实现的细节
2)可以对数据进行验证,保证安全合理
3.封装实现的步骤1)将属性私有化private(不能直接修改)
2)提供一个公共的(public)set方法,对于属性判断并赋值
public void setXxx(类型 参数名){ // Xxx是某个属性
//加入数据验证的业务逻辑
属性=参数名;
}
3)提供一个公共的(public)get方法,用于获取属性的值
public 数据类型 getXxx(){ //权限判断,Xxx是某个属性
return xxx;
}
快速入门:
public class Encapsulation01 {
public static void main(String[] args) {
Person person = new Person();
person.setName("jack");
person.setAge(300);
person.setSalary(30000);
System.out.println(person.info());
}
}
class Person {
public String name;
private int age;
private double salary;
//自己写setxxx,getxxx太慢,用快捷键
public String getname() {
return name;
}
public void setName(String name) {
if (name.length() > 1 && name.length() < 8) {
this.name = name;
} else {
System.out.println("你的年龄设置的不对,长度应该在(1-8)之间");
this.name = "无名氏"
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age >= 1 && age <= 120) {
this.age = age;
} else {
System.out.println("你的年龄设置的不对,需要在(1-120)之间");
this.age = 18;
}
}
public void setSalary(double salary) {
this.salary = salary;
}
public double getSalary() {
return salary;
}
//写一个方法返回属性信息
public String info() {
return "信息为 name=" + name + " age=" + age + " 薪水=" + salary;
}
}
4.封装与构造器
封装是可以被含在构造器内的
public Person(String s) {
}
public Person(String name, int age, double salary) {
// this.name = name;
// this.age = age;
// this.salary = salary;
setName(name);
setAge(age);
setSalary(salary);
}



