>[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();
}
}
}
~~~
- windows -- 环境变量
- Vscode -- 编写java
- 初始java
- java -- 关键字
- 编写第一个java程序
- java -- 注释
- 计算机存储 -- 进制
- java -- 类型
- java -- 变量
- 数字类型
- 布尔类型
- 字符类型
- 类型转换
- 双等比较是什么
- java -- 运算符
- 算数运算符
- 字符串拼接
- 关系/比较运算符
- 自增减运算符
- 逻辑运算符
- 三目运算
- 赋值运算符
- 移位运算符
- 位运算符
- 运算符优先级
- java -- 流程控制语句
- if /else if /if -- 判断
- switch case分支结构
- for -- 循环
- 用双重for循环
- while -- 循环
- do while -- 循环
- 案例练习
- java -- 数组
- 数组的存储
- 数组的增删改查
- 数组的特点
- 数组案例
- 二维数组
- 数组的工具方法
- java -- 方法
- java -- 方法的重载
- java -- 方法的调用流程
- java -- 类方法传参注意事项
- java -- 方法练习案例
- 对比 return break continue
- for each循环
- java -- 基础练习
- java -- 面向对象
- java -- 创建类和对象
- java -- 访问控制符
- java -- 类成员方法
- java -- 构造方法
- java -- this
- java -- 封装
- java -- 对象内存图
- java -- 创建对象案例
- java -- static
- java -- 继承
- super -- 关键字
- java -- 构造块和静态代码块
- java -- 重写
- java -- final
- java -- 多态
- java -- 抽象类
- java -- 接口
- 引用类型数据转换
- 综合案例
- java -- 内部类
- java -- 回调模式
- java -- 枚举类型
- java -- switch 使用枚举
- java -- 枚举方法使用
- java -- 枚举类实现接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 递归练习
- java -- 设计模式
- 单例模式
- java -- 注解
- java -- 元注解
- Java -- 核心类库
- java -- 处理字符串
- Java -- String
- String -- 常用方法
- String -- 正则
- Java -- StringBuilder 和 StringBuffer
- 知识点
- Java -- StringJoiner 字符串拼接
- 练习题
- 字符串的总结
- Java -- 包装类
- Integer
- Double
- Boolean
- Character
- java -- 集合类
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 获取当前时间戳
- Java -- 异常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法