Para mi tarea, se nos ha encomendado la tarea de "declarar una matriz de cuatro" empleados universitarios regulares ", tres profesores y siete estudiantes. Pedir al usuario que especifique qué tipo de datos se ingresarán (C, F, S) o la opción para salir (Q). Mientras el usuario continúa, acepte la entrada de datos para la persona adecuada. Muestre un mensaje de error si el usuario ingresa más que el número especificado para cada tipo de persona. un informe en la pantalla que enumere cada grupo de personas bajo el encabezado apropiado. Si el usuario no ha ingresado datos para uno o más tipos de Persona durante una sesión, muestre un mensaje apropiado debajo del encabezado apropiado ".Herencia en 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
Después de leer el Tutorials sobre sucesiones y arrastre un montón de discusiones de herencia, creo que lo tengo a la derecha en el papel, pero preferiría alguna entrada antes de que consiga los codos de profundidad en el código que no funciona. :)
estoy definiendo
Person[x] = new Student();
(o Faculty
o CollegeEmployee
).
La clase Person
tiene todos los campos de entrada para un Person
, y las subclases tienen sólo los datos adicionales (por ejemplo, major
en el caso de Student
).
Cuando creo el new Student();
los campos de entrada tanto en el People
clases y Student
estarán disponibles para mí porque Student
extiende People
y las variables adicionales definidas en Student
se agregan para la definición de Person
para esa instancia.
Cuando llega el momento de extraer datos de la matriz, Java lo ve como una matriz de Person
, así que tengo que agregar lógica
if Person[x] instanceof Student (or `Faculty` or `CollegeEmployee`)
para ejecutar las acciones apropiadas para el tipo de Person
. Mi sensación es que el instanceof
está actuando para anular (en este caso para anexar) lo que Java sabe sobre la clase Person
en el lado de salida.
¿Me falta algún entendimiento crítico de esto?
Si necesita utilizar 'instanceof', hay una buena posibilidad de que esté haciendo algo mal ... –
O las limitaciones de asignación son un poco desactivas. Es posible que desee publicar las instrucciones de asignación exacta. –
La persona es siempre un ejemplo peligroso de herencia. Cuando era estudiante, era un empleado universitario al mismo tiempo. Mejor que con la herencia (no múltiple), tal situación se puede modelar aplicando algo como 'Roles' a una instancia de Persona. – nansen