核心Java中的继承

dww*_*n66 7 java oop inheritance

对于我的家庭作业,我们的任务是"宣布一组四个"常规"大学员工,三个学院和七个学生.提示用户指定将输入哪种类型的数据(C,F,S)或选项退出(Q).当用户继续时,接受相应人员的数据输入.如果用户为每个人类型输入的数量超过指定数量,则显示错误消息.当用户退出时,在屏幕上显示每个人的报告适当标题下的一组人.如果用户在会话期间没有为一种或多种类型的人输入数据,则在适当的标题下显示适当的消息.

    Class           | Extends         | Variables
--------------------------------------------------------
    Person          | None            | firstName, lastName, streetAddress, zipCode, phone
    CollegeEmployee | Person          | ssn, salary,deptName
    Faculty         | CollegeEmployee | tenure(boolean)
    Student         | person          | GPA,major
Run Code Online (Sandbox Code Playgroud)

在阅读了关于继承的教程和拖延一堆继承讨论之后,我想我已经把它写在纸上了,但是在我得到肘部深入无法工作的代码之前,我会更喜欢一些输入.:)

我正在定义

Person[x] = new Student();
Run Code Online (Sandbox Code Playgroud)

(FacultyCollegeEmployee).

Person类有所有要输入字段Person,和子类只具有附加数据(例如,major在的情况下Student).

当我new Student();在BOTH中创建输入字段时,我可以使用PeopleStudent类,因为Studentextends People和定义的其他变量Student被附加到该Person实例的定义中.

当从数组中提取数据时,Java将其视为一个数组Person,因此我需要添加逻辑

if Person[x] instanceof Student (or `Faculty` or `CollegeEmployee`)
Run Code Online (Sandbox Code Playgroud)

为类型执行适当的操作Person.我的感觉是,它instanceof正在覆盖(在这种情况下是追加)Java Person在输出端知道的类.

我错过了对此的任何批评性理解吗?

Kon*_*uda 3

不仅有继承,还有多态性 - 只需将输入和验证对象数据所需的代码放入对象的方法中(例如: inputMyData() 亲自覆盖基方法,可能调用超类的方法) - 这样您就可以避免 instanceof 和强制转换。