- 基本介绍
面向对象三大特性:封装、继承、多态- 封装介绍
封装(encapsulation)就是把抽象出的数据{属性}和对数据的操作【方法】封装在一起,数据保护在内部、程序的其他部分只有通过被授权的操作【方法】,才能对数据进行操作。- 封装的理解和好处
1.隐藏实现细节 方法调用
2.可以对数据进行验证,保证安全合理
Person {name,age}
Person p = new Person();
p.name=" jack";
p.age=1000;- 封装的实现步骤(三步)
1.将属性进行私有化【外部不能直接修改属性】
2.提供一个公共的set方法,用于对属性判断并赋值
public void setXxx(参数 参数名){ 属性=参数名}
3.提供一个公共的get方法,用于获取属性的值
public XX getXxx(){//权限判断
return xx;
}- 快速入门
案列:请大家看一个小程序(encapsulation01.java)不能随便查看人的年龄,工资等隐私,并对设置年龄进行合理的验证。年纪合理就设置,否则给默认- 年龄必须在1-120,年龄,工资不能直接查看,name 的长度在2-6字符之间
package com.java.encap;
/*请大家看一个小程序(encapsulation01.java)不能随便查看人的年龄,工资等隐私,
并对设置年龄进行合理的验证。年纪合理就设置,否则给默认
年龄必须在1-120,年龄,工资不能直接查看,name 的长度在2-6字符之间*/
public class Encapsulation01 {
public static void main(String[] args) {
Person p = new Person();
p.setName("jack232");
p.setAge(300);
p.setSalary(3000);
System.out.println(p.info());
}
}
class Person{
public String name;
private int age;
private double salary;
//自己写太慢,我们可以使用快捷键
//根据要求完善代码
public String getName() {
return name;
}
public void setName(String name) {
//加入对数据的校验
if (name.length() >= 2 && name.length() <= 6) {
this.name = name;
}else{
System.out.println("名字长度不对");
this.name="无名人";
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>=1 && age<=120){
this.age = age;
}else{
System.out.println("年龄不对");
this.age=18;//给一个默认年龄
}
}
public double getSalary() {
//可以这里增加当前对象的权限判断
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String info(){
return "信息为 name="+name+" age="+age+" salary="+salary;
}
}