乐趣区

关于java:JAVA基础封装

封装的概念

  • 通常状况下能够在测试类给成员变量赋值一些非法但不合理的数值(比方年龄是 500). 无论是编译阶段还是运行阶段都不会报错或者给出提醒, 此时与现实生活不符
  • 为了防止上述谬误的产生, 就须要 对成员变量进行密封包装解决 , 来暗藏成员变量的细节以及保障成员变量数值的合理性, 该机制就叫做 封装

封装的实现流程

  • 私有化成员变量, 应用 private 关键字润饰
  • 提供私有 getset办法, 并在办法体中进行正当值的判断
  • 在构造方法中调用 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();}
}
退出移动版