package com.oop.demo04;
/**
* @ClassName: Student
* @Author: 南冥有猫不须铭
* @Date: 2021/4/1-21:34
* @Description: 封装详解
*/
//类
public class Student {
//属性私有
private String name; //名字
private int id; //学号
private char sex; //性别
private int age; //年龄
//提供一些可以操作这个属性的方法!
//提供一些 public的 get、set方法
//get 获得这个数据
public String getName(){
return this.name;
}
//set 给这个数据设置值
public void setName(String name){ // setName getName 遵循驼峰命名规则
this.name = name;
}
// Alt + Insert(在Num Unlock状态下按0键) + 选择 Getter and Setter + 选择需要添加的属性 : 自动生成get/set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) { //封装后可以在set方法中进行安全性检查
if (age>120 || age<0) { //不合法
this.age = 3; //不合法的年龄都变成3岁
}else {
this.age = age;
}
}
}
package com.oop.demo04;
/**
* @ClassName: Application
* @Author: 南冥有猫不须铭
* @Date: 2021/4/1-21:42
* @Description: 测试(封装)
*/
/*封装的意义:
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统的可维护性增加了
*/
public class Application {
public static void main(String[] args) {
Student s1 = new Student();
//s1.name = ""; //报错,因为 name是私有属性
//方法的重载:方法名(相同),参数列表(不同)
//通过get、set方法来操作私有属性
s1.setName("秦疆");
System.out.println(s1.getName());//s1.getName().sout(+Enter) 输出
s1.setAge(999);//年龄999是不合法的,可以在set方法中设置安全性检查(输入不合法的年龄都变成3岁)
System.out.println(s1.getAge());
s1.setSex('男');
System.out.println(s1.getSex());
}
}