封装的概念
- 通常状况下能够在测试类给成员变量赋值一些非法但不合理的数值(比方年龄是500). 无论是编译阶段还是运行阶段都不会报错或者给出提醒, 此时与现实生活不符
- 为了防止上述谬误的产生, 就须要对成员变量进行密封包装解决,来暗藏成员变量的细节以及保障成员变量数值的合理性, 该机制就叫做封装
封装的实现流程
- 私有化成员变量, 应用
private
关键字润饰 - 提供私有
get
和set
办法, 并在办法体中进行正当值的判断 - 在构造方法中调用
set
办法进行正当值的判断
案例题目
提醒用户输出班级的学生人数以及每个学生的信息, 学生的信息有:学号, 姓名, 最初别离打印进去
public class Student { // 封装第一步: 将变量私有化, 加private关键字 private int id; // 自定义成员变量, 用于保留学生学号 private String name; // 自定义成员变量, 用于保留学生姓名 // 封装第三步: 在私有的构造方法中调用set办法进行正当值的判断 public Student() { } public Student(int id, String name) { //this.id = id; //this.name = name; setId(id); setName(name); } // 封装第二步: 提供公有化的get和set办法, 对变量进行合理化判断 // 公有化是加public关键字 public int getId() { return id; } public String getName() { return name; } public void setId(int id) { // 形参中记得加变量类型; 没有返回值要加void if(id > 0) this.id = id; else System.out.println("学号有误,请查看"); } public void setName(String name) { this.name = name; } // 自定义成员办法, 用于打印学生学号与姓名 // 没有任何修饰词的办法的私密级别介于private与public之间 public void show() { //System.out.println("学号为" + id + "的学生姓名是" + name); System.out.println("学号为" + getId() + "的学生姓名是" + getName()); }}
封装好Student类
之后,创立StudentTest测试类
,对封装好的类进行测试
public class StudentTest { public static void main(String[] args) { // 申明Student类的援用, 指向类的对象 Student s1 = new Student(); // 对成员变量进行赋值并打印 // s1.id = -1107; // s1.name = "wdm"; s1.setId(-1107); s1.setName("wdm"); s1.show(); System.out.println("-----------------------"); // 应用有参形式构造方法并打印特色 Student s2 = new Student(-1108, "xx"); s2.show(); }}