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.
8 lines
1.3 KiB
8 lines
1.3 KiB
核心思路:利用多态,将 addStudent 和 addTeacher 合并为 addPerson(Person p),用父类引用统一接收所有子类对象,存入 List<Person> 统一管理,实现代码复用和统一入口。
|
|
2. 特有属性的处理方案:
|
|
◦ 方案一(作业首选):instanceof 类型判断 + 向下转型。在需要访问子类特有属性时,通过 instanceof 判断对象的真实类型,将父类引用向下转型为对应的子类类型,再调用子类特有的 getter 方法(如 getStudentId()/getTeacherId()),从而获取特有属性。
|
|
◦ 方案二(进阶):模板方法模式。在父类 Person 中定义抽象方法 getSpecialInfo(),让 Student和 Teacher 各自实现该方法,返回自己的特有属性,父类统一调用该方法,无需类型判断,代码更简洁,符合开闭原则。
|
|
3. 优势:
|
|
◦ 合并方法后,减少了代码冗余,统一了人员添加的入口,提升了代码的可维护性。
|
|
◦ 多态保证了新增人员类型(如「管理员」)时,无需修改 addPerson 方法,仅需新增子类即可,符合面向对象的设计思想。
|
|
4. 注意事项:向下转型时,必须先通过 instanceof 判断类型,避免 ClassCastException 类型转换异常;子类特有属性必须通过 getter 方法访问,保证封装性。
|
|
|