Per i miei compiti, siamo stati incaricati di "dichiarare una schiera di quattro impiegati del college" normali ", tre Facoltà e sette studenti e chiedere all'utente di specificare il tipo di dati da inserire (C, F, S) o l'opzione per uscire (Q) .Se l'utente continua, accetta l'inserimento dati per la persona appropriata.Visualizza un messaggio di errore se l'utente immette più del numero specificato per ogni tipo di persona. un rapporto sullo schermo che elenca ciascun gruppo di persone sotto l'intestazione appropriata Se l'utente non ha inserito i dati per uno o più tipi di Persona durante una sessione, visualizza un messaggio appropriato sotto l'intestazione appropriata. "Ereditarietà in Core Java
Class | Extends | Variables
--------------------------------------------------------
Person | None | firstName, lastName, streetAddress, zipCode, phone
CollegeEmployee | Person | ssn, salary,deptName
Faculty | CollegeEmployee | tenure(boolean)
Student | person | GPA,major
Dopo aver letto la Tutorials sulle successioni e traina un mucchio di discussioni eredità, credo di aver capito bene sulla carta, ma preferirei un certo input prima di entrare gomiti in profondità nel codice che non funziona. :)
sto definendo
Person[x] = new Student();
(o Faculty
o CollegeEmployee
).
La classe Person
ha tutti i campi di immissione per un Person
, e le sottoclassi hanno soltanto i dati aggiuntivi (ad esempio, major
nel caso di Student
).
Quando Creo la new Student();
i campi di input in entrambe le classi People
e Student
saranno disponibili perché Student
estende People
e le variabili aggiuntive definite in Student
vengono aggiunti alla definizione di Person
per questo esempio.
Quando arriva il momento di tirare i dati dalla matrice, Java lo vede come una matrice di Person
, quindi ho bisogno di aggiungere la logica
if Person[x] instanceof Student (or `Faculty` or `CollegeEmployee`)
per eseguire le azioni appropriate per il tipo di Person
. La mia sensazione è che il instanceof
stia agendo per sovrascrivere (in questo caso per aggiungere a) ciò che Java conosce sulla classe Person
sul lato di uscita.
Mi manca qualche comprensione critica di questo?
Se è necessario utilizzare 'instanceof', c'è una buona possibilità che tu stia facendo qualcosa di sbagliato ... –
Oppure i vincoli di assegnazione sono un po 'spenti. Potresti voler pubblicare le esatte istruzioni di assegnazione. –
La persona è sempre un esempio pericoloso per l'ereditarietà. Quando ero uno studente ero contemporaneamente un impiegato universitario. Meglio che con l'ereditarietà (non multipla) una tale situazione può essere modellata applicando qualcosa come "Ruoli" a un'istanza di Persona. – nansen