package w5挑战版; import java.util.List; import java.util.ArrayList; // 人员管理器(重构关键) public class PersonManager { // 用List存储Person,容纳所有子类对象 private List personList = new ArrayList<>(); // 核心重构:合并成一个方法,接收父类引用 public void addPerson(Person person) { personList.add(person); System.out.println("添加成功:" + person.getClass().getSimpleName()); } // 显示所有人信息(多态调用) public void showAllPersons() { System.out.println("\n=== 所有人员列表 ==="); for (Person p : personList) { p.showInfo(); } } // 解决特定属性问题:使用instanceof判断类型并获取属性 public void checkPersonDetails() { System.out.println("\n=== 人员详情检查 ==="); for (Person p : personList) { if (p instanceof Student) { Student s = (Student) p; // 现在Student有了getStudentId(),就不会报错了 System.out.println(s.getName() + " 是学生,学号:" + s.getStudentId()); } else if (p instanceof Teacher) { Teacher t = (Teacher) p; // 现在Teacher有了getTeacherId(),就不会报错了 System.out.println(t.getName() + " 是老师,工号:" + t.getTeacherId()); } else { System.out.println(p.getName() + " 是普通人员"); } } } }