You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.0 KiB
102 lines
3.0 KiB
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
|
|
}
|
|
}
|
|
}
|
|
|