![]() |
Casting
Me hace falta saber como puedo hacer un casting, tengo una clase persona, una clase estudiante y otra profesor, estas dos ultimas heredan de persona y ahora me hace falta meter los objetos en una lista de tipo persona y resulta que cuando intento acceder a los metodos de los hijos no me deja, como casteo para si es del tipo estudiante entre a un metodo y si es de tipo profesor entre a otro metodo
Saludos |
|
Hola.
Para algunos casos en particular, el uso del operador is puede dar resultados no esperados, ya que este devuelve verdadero tanto si el objeto pertenece a la clase, como si es desciende de ella. Por ejemplo: Que muestra el mensaje 'TPersona' cuando el objeto creado es un TAlumno. O también: Donde la salida es 'TAlumno' y 'TPersona'. En casos que pueden prestarse a confusiones, una buena alternativa es usar la función ClassType que nos da dinámicamente la referencia de clase del objeto:
Un saludo. |
Cita:
Esto no quiere decir que no puedas efectuar operaciones de acuerdo a la clase específica. Pero de ello se encarga el polimorfismo. Si tu clase Persona tiene un método (virtual) HazEsto, las clases derivadas (Estudiante, Profesor, etc.) pueden redefinir dicho método para adaptarse a sus necesidades específicas. Entonces, puedes recorrer la lista en forma genérica:
con la seguridad de que, dependiendo del objeto, se llamará al método correcto. // Saludos |
Gracias
Gracias por la ayuda!!!!!!!!!
|
Error
Me da error al llamar al metodo del hijo!!!! |
Resuelto
Ya se arreglo gracias a ustedes
Saludos |
respuesta
Lo que dice roman es muy util pero no para mi caso ya que no tiene sentido creo yo tener en una clase Estudiante un metodo getsueldo que solo este metodo es de los profesores. Saludos |
Cita:
// Saludos |
La franja horaria es GMT +2. Ahora son las 15:44:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi