3 changed files with 119 additions and 0 deletions
@ -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
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -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(); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue