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)
(Faculty或CollegeEmployee).
的Person类有所有要输入字段Person,和子类只具有附加数据(例如,major在的情况下Student).
当我new Student();在BOTH中创建输入字段时,我可以使用People和Student类,因为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在输出端知道的类.
我错过了对此的任何批评性理解吗?
不仅有继承,还有多态性 - 只需将输入和验证对象数据所需的代码放入对象的方法中(例如: inputMyData() 亲自覆盖基方法,可能调用超类的方法) - 这样您就可以避免 instanceof 和强制转换。