- 第 152 篇 -
Date: 2025 - 11- 16
Author: 鄭龍浩(仟墨)
【Java 基礎】
文章目錄
- 【Java 基礎】
- 5 面向對象 - 實體類
- 5.1 定義
- 5.2 實體類的要求:
- 5.2 實體類的設計理念:職責分離
5 面向對象 - 實體類
5.1 定義
一種特殊的類,主要用於存儲數據
5.2 實體類的要求:
滿足以下要求:
- 必須提供無參構造器
- 必須提供無參構造器
- 必須提供無參構造器
- 有參構造器可選(推薦提供)
5.2 實體類的設計理念:職責分離
實體類體現了"存儲與處理相分離"的設計思想:
1 傳統做法:一個類同時負責存儲數據和處理數據
// 不推薦:存儲和處理混在一起
public class Student {
private String name;
public void printInfo() { /* 打印對象信息 */ }
public void getName() { /* 獲取對象姓名 */ }
public void setName() { /* 設置對象姓名 */ }
// ... 其他業務邏輯
}
2 實體類做法:分為兩個獨立的類
Student2.java
====== Student2.java ======
package com.zhenglonghao.opp.student2;
/***
* Author: 鄭龍浩
* Date: 2025-11-16
* Description: 負責存儲學生信息的類 + getter 和 setter 方法
*/
public class Student2 {
// 1 私有成員
private String name;
private int age;
private double Chinese;
private double Math;
// 2 構造器
public Student2() {} // 無參構造器
public Student2(String name) {} // 有參構造器
public Student2(String name, int age) {} // 有參構造器
// 3 Getter 和 Setter 方法
public String getName() {return name;} // 獲取 姓名
public void setName(String name) {this.name = name;} // 設置 姓名
public int getAge() {return age;} // 獲取 年齡
public void setAge(int age) {this.age = age;} // 設置 年齡
public double getChinese() {return Chinese;} // 獲取 中文成績
public void setChinese(double Chinese) {this.Chinese = Chinese;} // 設置 中文成績
public double getMath() {return Math;} // 獲取 數學成績
public void setMath(double Math) {this.Math = Math;} // 設置 數學成績
}
StudentOperator2.java
====== StudentOperator.java ======
package com.zhenglonghao.opp.student2;
/***
* Author: 鄭龍浩
* Date: 2025-11-16
* Description: 負責處理學生信息的類
*/
public class Student2Operator {
Student2 sta = new Student2(); // 創建對象
// 構造器存儲傳來的信息
public Student2Operator(Student2 sta) {
this.sta = sta;
}
// 公有方法
// 打印所有信息
public void printInfo() {
System.out.println("姓名:" + sta.getName() + ",年齡:" + sta.getAge() +
",語文:" + sta.getChinese() + ",數學" + sta.getMath());
}
// 打印平均成績
public void scoreAvg() {
double avg = (sta.getChinese() + sta.getMath()) / 2;
System.out.println("平均分:" + avg);
}
}
**Test2.java **
// ====== Test.java ======
package com.zhenglonghao.opp.student2;
/***
* Author: 鄭龍浩
* Date: 2025-11-16
* Description: 聯繫封裝思想 + 實體類(將數據和數據處理放到兩個類中)
*/
public class Test2 {
public static void main(String[] args) {
// 對象s1
Student2 s1 = new Student2(); // 無參構造器創建對象
// 存入數據
s1.setName("ZZZ"); // 輸入姓名
s1.setAge(18); // 輸入年齡
s1.setChinese(80);
s1.setMath(90);
System.out.println("對象s1信息:\n");
// 創建一個操作對象,將s1傳入,用於處理s1的信息
Student2Operator operator = new Student2Operator(s1);
operator.printInfo(); // 打印信息
operator.scoreAvg(); // 打印平均成績
System.out.println("\n------------------------\n");
// 對象s2
Student2 s2 = new Student2("ZLH", 18); // 創建對象時直接傳參進去
System.out.println("對象s2信息:\n");
// 創建一個操作對象,將s2傳入,用於處理s2的信息
Student2Operator operator2 = new Student2Operator(s2);
operator2.printInfo(); // 輸出信息
operator2.scoreAvg(); // 輸出平均成績
}
}
執行Test2.java,打印:
對象s1信息:
姓名:ZZZ,年齡:18,語文:80.0,數學90.0
平均分:85.0
------------------------
對象s2信息:
姓名:null,年齡:0,語文:0.0,數學0.0
平均分:0.0
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。