💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
>[success] # java -- 封装 1. 封装是对**成员变量**进行**密封包装处理**,来隐 藏**成员变量的细节**以及保证**成员变量数值的合理性**,即私有化==封装 2. 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量`private`,提供对应的`getXxx()/setXxx()`方法 >[danger] ##### 封装过程 1. 类名需要见名知意 2. 成员变量使用private修饰 3. 提供至少两个构造方法 * 无参构造方法 * 带全部参数的构造方法 4. 针对于每一个私有化的成员变量,提供公有的**get和set**方法 ,提供每一个成员变量对应的`setXxx()/getXxx()` * **get方法**:对外提供成员变量的值 * **set方法**:给成员变量赋值 5. 如果还有其他行为,也需要写上 >[danger] ##### 学生信息录入案例 1. 在构造方法中**调用set方法**进行合理值的判断。 ~~~ public class Student { // 变成私有变量 private int age; private String name; private int id; // 构造方法 Student(int id, int age, String name) { // 在构造方法中调用set方法进行合理值的判断 setAge(age); setId(id); setName(name); } // set 赋值 public void setId(int id) { // 做了封装后可以给变量做合理值判断 if (id > 0) { this.id = id; } else { System.out.println("学号必须大于0"); } } // get 获取 public int getId() { return id; } public void setAge(int age) { if (age > 0) { this.age = age; } else { System.out.println("年龄必须大于0"); } } public int age() { return age; } public void setName(String name) { this.name = name; } public String getName() { return name; } // 展示个人信息 public void showInfo() { System.out.println(id + ":" + name + age); } } ~~~ * 运行 入口 main 方法的类一般作为测试类 ~~~ import java.util.Scanner; public class StudentsTest { // 入口方法 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int nums = sc.nextInt(); // 声明Student 类型数组 Student[] students = new Student[nums]; for (int i = 1; i <= nums; i++) { System.out.println("学号" + i + "姓名和年龄"); int age = sc.nextInt(); String name = sc.next(); // 录入保存到数组中 students[i - 1] = new Student(i, age, name); } // 打印信息 for (int i = 0; i < students.length; i++) { students[i].showInfo(); } } } ~~~