Browse Source

添加W5

main
故春 2 weeks ago
parent
commit
6c68b696fc
  1. 102
      W5/Person.java
  2. 17
      W5/PersonSystemTest.java
  3. 0
      W5/W5.txt

102
W5/Person.java

@ -0,0 +1,102 @@
import java.util.ArrayList;
import java.util.List;
// 公共父类 Person
class Person {
protected String id;
protected String name;
protected int age;
public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
// 公共方法:展示基本信息
public void showInfo() {
System.out.println("ID: " + id + ", 姓名: " + name + ", 年龄: " + age);
}
}
// 子类 Student(学生)
class Student extends Person {
private String studentNo; // 学号(特有属性)
private String major; // 专业(特有属性)
public Student(String id, String name, int age, String studentNo, String major) {
super(id, name, age);
this.studentNo = studentNo;
this.major = major;
}
// 重写 showInfo,展示学生特有信息
@Override
public void showInfo() {
super.showInfo();
System.out.println("学号: " + studentNo + ", 专业: " + major);
System.out.println("------------------------");
}
// 学生特有方法
public String getStudentNo() {
return studentNo;
}
}
// 子类 Teacher(老师)
class Teacher extends Person {
private String teacherNo; // 工号(特有属性)
private String department;// 院系(特有属性)
public Teacher(String id, String name, int age, String teacherNo, String department) {
super(id, name, age);
this.teacherNo = teacherNo;
this.department = department;
}
// 重写 showInfo,展示老师特有信息
@Override
public void showInfo() {
super.showInfo();
System.out.println("工号: " + teacherNo + ", 院系: " + department);
System.out.println("------------------------");
}
// 老师特有方法
public String getTeacherNo() {
return teacherNo;
}
}
// 管理类:用多态统一管理
class PersonManager {
private List<Person> personList = new ArrayList<>();
// 统一添加方法:替代 addStudent 和 addTeacher
public void addPerson(Person p) {
// 1. 处理公共属性:直接通过父类引用操作
System.out.println("正在添加人员: " + p.name);
// 2. 处理子类特有属性:通过类型判断 + 向下转型
if (p instanceof Student) {
Student student = (Student) p;
System.out.println("学生学号: " + student.getStudentNo() + ",已录入学生信息");
} else if (p instanceof Teacher) {
Teacher teacher = (Teacher) p;
System.out.println("老师工号: " + teacher.getTeacherNo() + ",已录入老师信息");
}
// 3. 统一存入集合
personList.add(p);
System.out.println("添加成功!\n");
}
// 统一展示所有人员信息
public void showAllPersons() {
System.out.println("=== 所有人员信息 ===");
for (Person p : personList) {
p.showInfo(); // 多态调用:自动匹配子类的 showInfo
}
}
}

17
W5/PersonSystemTest.java

@ -0,0 +1,17 @@
// 主类测试
public class PersonSystemTest {
public static void main(String[] args) {
PersonManager manager = new PersonManager();
// 测试添加学生
Student student = new Student("P001", "张三", 20, "S2023001", "计算机科学与技术");
manager.addPerson(student);
// 测试添加老师
Teacher teacher = new Teacher("P002", "李四", 35, "T2020001", "计算机学院");
manager.addPerson(teacher);
// 展示所有信息
manager.showAllPersons();
}
}

0
W5/W5.txt

Loading…
Cancel
Save