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