Week 1-8: Spring Boot 学习计划完整项目
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
117
week1/day05/Student.java
Normal file
117
week1/day05/Student.java
Normal file
@@ -0,0 +1,117 @@
|
||||
package day05;
|
||||
|
||||
/**
|
||||
* 第 5 天:面向对象(上)—— 类与对象、封装
|
||||
* 目标:掌握如何定义一个类,如何创建和使用对象
|
||||
*
|
||||
* 重点:
|
||||
* private 成员变量 + public getter/setter = 封装
|
||||
* 构造方法 = 初始化对象的快捷方式
|
||||
* this = 区分成员变量和局部变量
|
||||
*/
|
||||
|
||||
// ==================== Student 类定义 ====================
|
||||
class Student {
|
||||
|
||||
// 1. 私有成员变量(封装:外部不能直接访问)
|
||||
private String name;
|
||||
private int age;
|
||||
private String studentId; // 学号
|
||||
|
||||
// 2. 构造方法(与类同名,无返回值)
|
||||
// 无参构造
|
||||
public Student() {
|
||||
this.name = "未知";
|
||||
this.age = 0;
|
||||
this.studentId = "未分配";
|
||||
}
|
||||
|
||||
// 有参构造(支持创建对象时直接赋值)
|
||||
public Student(String name, int age, String studentId) {
|
||||
this.name = name;
|
||||
this.age = age;
|
||||
this.studentId = studentId;
|
||||
}
|
||||
|
||||
// 3. Getter / Setter(公开的访问入口)
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
// 可以在 setter 里加校验逻辑
|
||||
if (name == null || name.trim().isEmpty()) {
|
||||
System.out.println("⚠ 姓名不能为空!");
|
||||
return;
|
||||
}
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
if (age < 0 || age > 150) {
|
||||
System.out.println("⚠ 年龄不合理!");
|
||||
return;
|
||||
}
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getStudentId() {
|
||||
return studentId;
|
||||
}
|
||||
|
||||
public void setStudentId(String studentId) {
|
||||
this.studentId = studentId;
|
||||
}
|
||||
|
||||
// 4. 行为方法
|
||||
public void study(String subject) {
|
||||
System.out.println(name + " 正在学习 " + subject + "。");
|
||||
}
|
||||
|
||||
public void takeExam(String subject) {
|
||||
System.out.println(name + "(学号:" + studentId + ")正在参加 " + subject + " 考试。");
|
||||
}
|
||||
|
||||
public void introduce() {
|
||||
System.out.println("-----------------------------------");
|
||||
System.out.println("自我介绍:");
|
||||
System.out.println(" 姓名:" + name);
|
||||
System.out.println(" 年龄:" + age + " 岁");
|
||||
System.out.println(" 学号:" + studentId);
|
||||
System.out.println("-----------------------------------");
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== 测试类 ====================
|
||||
class StudentTest {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("========== 面向对象练习 ==========\n");
|
||||
|
||||
// 1. 使用无参构造 + setter 创建对象
|
||||
Student s1 = new Student();
|
||||
s1.setName("张三");
|
||||
s1.setAge(20);
|
||||
s1.setStudentId("2024001");
|
||||
s1.introduce();
|
||||
s1.study("Java");
|
||||
s1.takeExam("面向对象程序设计");
|
||||
|
||||
// 2. 使用有参构造直接创建
|
||||
Student s2 = new Student("李四", 22, "2024002");
|
||||
s2.introduce();
|
||||
|
||||
// 3. 创建第三个学生
|
||||
Student s3 = new Student("王五", 19, "2024003");
|
||||
s3.introduce();
|
||||
s3.study("数据结构");
|
||||
|
||||
// 4. 演示数据校验
|
||||
System.out.println("\n--- 测试 data 校验 ---");
|
||||
s3.setAge(-5); // 触发校验
|
||||
s3.setName(""); // 触发校验
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user