>[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 -- 用法