Для моей домашней работы нам было поручено "объявить массив из четырех" обычных "сотрудников колледжа, трех преподавателей и семи студентов. Предложите пользователю указать, какой тип данных будет вводиться (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
После прочтения Обучающих программ по наследованию и троллинга множества обсуждений наследования, я думаю, что я понял это правильно на бумаге, но предпочел бы некоторый ввод, прежде чем я получу глубокие отрывки в коде, который не Работа. :)
Я определяю
Person[x] = new Student();
(или Faculty
или CollegeEmployee
).
Класс Person
имеет все поля ввода для Person
, а подклассы имеют ТОЛЬКО дополнительные данные (например, major
в случае Student
).
Когда я создаю new Student();
поля ввода в ОБА, классы People
и Student
будут мне доступны, потому что Student
расширяет People
и дополнительные переменные, определенные в Student
, добавляются к определение Person
для этого экземпляра.
Когда приходит время извлекать данные из массива, Java видит их как массив Person
, поэтому мне нужно добавить логику
if Person[x] instanceof Student (or `Faculty` or `CollegeEmployee`)
для выполнения соответствующих действий для типа Person
. Я чувствую, что instanceof
действует для переопределения (в данном случае для добавления) того, что Java знает о классе Person
на стороне вывода.
Я упускаю какие-либо критические понимания этого?