✈【【零基础 快速学Java】韩顺平 零基础30天学会Java】
面向对象编程有三大特征:封装、继承和多态。
封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作[方法],才能对数据进行操作。
将属性进行私有化private 【不能直接修改属性】
提供一个公共的public set方法,用于对属性判断并赋值
public void setXxx(类型 参数名){
//加入数据验证的业务逻辑
属性 = 参数名;
}
提供一个公共的public get方法,用于获取属性的值
public 数据类型 getXxx(){
return xx;
}
举个栗子
package com.dingjiaxiong.encap;
/**
* ClassName: Encapsulation01
* date: 2022/9/2 22:15
*
* @author DingJiaxiong
*/
public class Encapsulation01 {
public static void main(String[] args) {
Person person = new Person();
person.setName("韩老师");
person.setAge(30);
person.setSalary(30000);
System.out.println(person.info());
System.out.println(person.getSalary());
//使用有参构造器
Person smith = new Person("Smith" , 80 , 50000);
System.out.println("===========Smith的信息=======");
System.out.println(smith.info());
}
}
class Person {
public String name;
private int age;
private double salary;
public void say(int n, String name) {
}
public Person() {
}
public Person(String name, int age, double salary) {
// this.name = name;
// this.age = age;
// this.salary = salary;
setName(name);
setAge(age);
setSalary(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;
}
}
运行结果

举个栗子
