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 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 } } }