Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.lenguajes.* Foro > Newsgroup es.comp.lenguajes.java
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 06-07-2006, 14:52:47
pete
 
Mensajes: n/a
Predeterminado herencia y polimorfismo

Hola. Tengo el siguiente problema

Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
un array de Emple donde meto instancias de Emple y Jefe indistintamente para
tener una "colección heterogénea".

Emple e[] = new Emple[5];
e[0] = new Emple("Luis", "V", 1000);
e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
etc.

Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
por ejemplo, me da error diciendo que no encuentra ese método en Emple o
algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
Si alguien tiene alguna pista, se lo agradecería...

Gracias.


Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 06-07-2006, 15:00:51
emiedes
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

pete wrote:
> Hola. Tengo el siguiente problema
>
> Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
> un array de Emple donde meto instancias de Emple y Jefe indistintamente para
> tener una "colección heterogénea".
>
> Emple e[] = new Emple[5];
> e[0] = new Emple("Luis", "V", 1000);
> e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
> etc.
>
> Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
> problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
> por ejemplo, me da error diciendo que no encuentra ese método en Emple o


Claro.

e[1] está declarado como de tipo Emple (por pertenecer a un Emple[]). Lo
único que puedes garantizar es que e[1] tiene los métodos declarados en
Emple.
Dicho de otra manera. Para decidir qué métodos puedes utilizar, debes
considerar el tipo declarado (Emple) y no el tipo real (Jefe).

Una cosa que puedes hacer es:

if (e[1] instanceof Jefe)
((Jefe)e[1]).metodoDeJefe();

Es decir, primero te aseguras de que el tipo real de la referencia es el
que tú crees que es, y luego invocas el método de Jefe, previo cast a Jefe.

Pruébalo. Seguro que funciona. Pero no te olvides de la comprobación
inicial del tipo.

Saludos

> algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
> lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
> Si alguien tiene alguna pista, se lo agradecería...
>
> Gracias.
>
>

Responder Con Cita
  #3 (permalink)  
Antiguo 06-07-2006, 15:00:51
emiedes
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

pete wrote:
> Hola. Tengo el siguiente problema
>
> Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
> un array de Emple donde meto instancias de Emple y Jefe indistintamente para
> tener una "colección heterogénea".
>
> Emple e[] = new Emple[5];
> e[0] = new Emple("Luis", "V", 1000);
> e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
> etc.
>
> Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
> problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
> por ejemplo, me da error diciendo que no encuentra ese método en Emple o


Claro.

e[1] está declarado como de tipo Emple (por pertenecer a un Emple[]). Lo
único que puedes garantizar es que e[1] tiene los métodos declarados en
Emple.
Dicho de otra manera. Para decidir qué métodos puedes utilizar, debes
considerar el tipo declarado (Emple) y no el tipo real (Jefe).

Una cosa que puedes hacer es:

if (e[1] instanceof Jefe)
((Jefe)e[1]).metodoDeJefe();

Es decir, primero te aseguras de que el tipo real de la referencia es el
que tú crees que es, y luego invocas el método de Jefe, previo cast a Jefe.

Pruébalo. Seguro que funciona. Pero no te olvides de la comprobación
inicial del tipo.

Saludos

> algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
> lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
> Si alguien tiene alguna pista, se lo agradecería...
>
> Gracias.
>
>

Responder Con Cita
  #4 (permalink)  
Antiguo 06-07-2006, 15:00:51
emiedes
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

pete wrote:
> Hola. Tengo el siguiente problema
>
> Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
> un array de Emple donde meto instancias de Emple y Jefe indistintamente para
> tener una "colección heterogénea".
>
> Emple e[] = new Emple[5];
> e[0] = new Emple("Luis", "V", 1000);
> e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
> etc.
>
> Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
> problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
> por ejemplo, me da error diciendo que no encuentra ese método en Emple o


Claro.

e[1] está declarado como de tipo Emple (por pertenecer a un Emple[]). Lo
único que puedes garantizar es que e[1] tiene los métodos declarados en
Emple.
Dicho de otra manera. Para decidir qué métodos puedes utilizar, debes
considerar el tipo declarado (Emple) y no el tipo real (Jefe).

Una cosa que puedes hacer es:

if (e[1] instanceof Jefe)
((Jefe)e[1]).metodoDeJefe();

Es decir, primero te aseguras de que el tipo real de la referencia es el
que tú crees que es, y luego invocas el método de Jefe, previo cast a Jefe.

Pruébalo. Seguro que funciona. Pero no te olvides de la comprobación
inicial del tipo.

Saludos

> algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
> lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
> Si alguien tiene alguna pista, se lo agradecería...
>
> Gracias.
>
>

Responder Con Cita
  #5 (permalink)  
Antiguo 06-07-2006, 15:00:51
emiedes
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

pete wrote:
> Hola. Tengo el siguiente problema
>
> Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
> un array de Emple donde meto instancias de Emple y Jefe indistintamente para
> tener una "colección heterogénea".
>
> Emple e[] = new Emple[5];
> e[0] = new Emple("Luis", "V", 1000);
> e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
> etc.
>
> Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
> problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
> por ejemplo, me da error diciendo que no encuentra ese método en Emple o


Claro.

e[1] está declarado como de tipo Emple (por pertenecer a un Emple[]). Lo
único que puedes garantizar es que e[1] tiene los métodos declarados en
Emple.
Dicho de otra manera. Para decidir qué métodos puedes utilizar, debes
considerar el tipo declarado (Emple) y no el tipo real (Jefe).

Una cosa que puedes hacer es:

if (e[1] instanceof Jefe)
((Jefe)e[1]).metodoDeJefe();

Es decir, primero te aseguras de que el tipo real de la referencia es el
que tú crees que es, y luego invocas el método de Jefe, previo cast a Jefe.

Pruébalo. Seguro que funciona. Pero no te olvides de la comprobación
inicial del tipo.

Saludos

> algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
> lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
> Si alguien tiene alguna pista, se lo agradecería...
>
> Gracias.
>
>

Responder Con Cita
  #6 (permalink)  
Antiguo 06-07-2006, 15:00:51
emiedes
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

pete wrote:
> Hola. Tengo el siguiente problema
>
> Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
> un array de Emple donde meto instancias de Emple y Jefe indistintamente para
> tener una "colección heterogénea".
>
> Emple e[] = new Emple[5];
> e[0] = new Emple("Luis", "V", 1000);
> e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
> etc.
>
> Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
> problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
> por ejemplo, me da error diciendo que no encuentra ese método en Emple o


Claro.

e[1] está declarado como de tipo Emple (por pertenecer a un Emple[]). Lo
único que puedes garantizar es que e[1] tiene los métodos declarados en
Emple.
Dicho de otra manera. Para decidir qué métodos puedes utilizar, debes
considerar el tipo declarado (Emple) y no el tipo real (Jefe).

Una cosa que puedes hacer es:

if (e[1] instanceof Jefe)
((Jefe)e[1]).metodoDeJefe();

Es decir, primero te aseguras de que el tipo real de la referencia es el
que tú crees que es, y luego invocas el método de Jefe, previo cast a Jefe.

Pruébalo. Seguro que funciona. Pero no te olvides de la comprobación
inicial del tipo.

Saludos

> algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
> lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
> Si alguien tiene alguna pista, se lo agradecería...
>
> Gracias.
>
>

Responder Con Cita
  #7 (permalink)  
Antiguo 06-07-2006, 15:00:51
emiedes
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

pete wrote:
> Hola. Tengo el siguiente problema
>
> Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
> un array de Emple donde meto instancias de Emple y Jefe indistintamente para
> tener una "colección heterogénea".
>
> Emple e[] = new Emple[5];
> e[0] = new Emple("Luis", "V", 1000);
> e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
> etc.
>
> Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
> problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
> por ejemplo, me da error diciendo que no encuentra ese método en Emple o


Claro.

e[1] está declarado como de tipo Emple (por pertenecer a un Emple[]). Lo
único que puedes garantizar es que e[1] tiene los métodos declarados en
Emple.
Dicho de otra manera. Para decidir qué métodos puedes utilizar, debes
considerar el tipo declarado (Emple) y no el tipo real (Jefe).

Una cosa que puedes hacer es:

if (e[1] instanceof Jefe)
((Jefe)e[1]).metodoDeJefe();

Es decir, primero te aseguras de que el tipo real de la referencia es el
que tú crees que es, y luego invocas el método de Jefe, previo cast a Jefe.

Pruébalo. Seguro que funciona. Pero no te olvides de la comprobación
inicial del tipo.

Saludos

> algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
> lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
> Si alguien tiene alguna pista, se lo agradecería...
>
> Gracias.
>
>

Responder Con Cita
  #8 (permalink)  
Antiguo 06-07-2006, 15:00:51
emiedes
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

pete wrote:
> Hola. Tengo el siguiente problema
>
> Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
> un array de Emple donde meto instancias de Emple y Jefe indistintamente para
> tener una "colección heterogénea".
>
> Emple e[] = new Emple[5];
> e[0] = new Emple("Luis", "V", 1000);
> e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
> etc.
>
> Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
> problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
> por ejemplo, me da error diciendo que no encuentra ese método en Emple o


Claro.

e[1] está declarado como de tipo Emple (por pertenecer a un Emple[]). Lo
único que puedes garantizar es que e[1] tiene los métodos declarados en
Emple.
Dicho de otra manera. Para decidir qué métodos puedes utilizar, debes
considerar el tipo declarado (Emple) y no el tipo real (Jefe).

Una cosa que puedes hacer es:

if (e[1] instanceof Jefe)
((Jefe)e[1]).metodoDeJefe();

Es decir, primero te aseguras de que el tipo real de la referencia es el
que tú crees que es, y luego invocas el método de Jefe, previo cast a Jefe.

Pruébalo. Seguro que funciona. Pero no te olvides de la comprobación
inicial del tipo.

Saludos

> algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
> lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
> Si alguien tiene alguna pista, se lo agradecería...
>
> Gracias.
>
>

Responder Con Cita
  #9 (permalink)  
Antiguo 06-07-2006, 15:00:51
emiedes
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

pete wrote:
> Hola. Tengo el siguiente problema
>
> Defino la clase base Emple y la clase derivada Jefe. A continuación declaro
> un array de Emple donde meto instancias de Emple y Jefe indistintamente para
> tener una "colección heterogénea".
>
> Emple e[] = new Emple[5];
> e[0] = new Emple("Luis", "V", 1000);
> e[1] = new Jefe("RRHH", "Pepe", "V", 1500);
> etc.
>
> Si invoco un método de Emple con un objeto Jefe del array, me lo ejecuta sin
> problemas, pero si trato de ejecutar un método de Jefe (para el objeto e[1],
> por ejemplo, me da error diciendo que no encuentra ese método en Emple o


Claro.

e[1] está declarado como de tipo Emple (por pertenecer a un Emple[]). Lo
único que puedes garantizar es que e[1] tiene los métodos declarados en
Emple.
Dicho de otra manera. Para decidir qué métodos puedes utilizar, debes
considerar el tipo declarado (Emple) y no el tipo real (Jefe).

Una cosa que puedes hacer es:

if (e[1] instanceof Jefe)
((Jefe)e[1]).metodoDeJefe();

Es decir, primero te aseguras de que el tipo real de la referencia es el
que tú crees que es, y luego invocas el método de Jefe, previo cast a Jefe.

Pruébalo. Seguro que funciona. Pero no te olvides de la comprobación
inicial del tipo.

Saludos

> algo muy parecido. ¿Cuál es el problema? He intentado poner "cast" y no me
> lo admite. ¿Puede ser un problema de constructor de copia? No lo veo claro.
> Si alguien tiene alguna pista, se lo agradecería...
>
> Gracias.
>
>

Responder Con Cita
  #10 (permalink)  
Antiguo 06-07-2006, 15:46:58
Giovanni Zippotone
 
Mensajes: n/a
Predeterminado Re: herencia y polimorfismo

"pete" <pandiazQuitaEsto***ya.com> wrote in
news:e8j4ji$25a$1***nsnmpen3-gest.nuria.telefonica-data.net:


Hmmm tal como yo lo veo, estás tratando de usar un método que no está
definido en la clase Emple. Las subclases heredan los métodos de la clase
madre, pero la clase "madre" no puede utilizar métodos de las clases
"hija". Es decir, los métodos de clases superiores de las que se hereda se
pueden invocar, pero a la inversa no.
Responder Con Cita
 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
Polimorfismo en Herencia daniel Newsgroup microsoft.public.es.vc 12 20-03-2008 02:55:14
Implementando un polimorfismo. Javier M Mora Newsgroup es.comp.lenguajes.c++ 8 25-11-2007 23:38:34
Polimorfismo en Java Alexandre Vazquez Newsgroup es.comp.lenguajes.java 40 23-11-2006 08:46:50
pueden aclararme el concepto de polimorfismo ?? jose Newsgroup es.comp.lenguajes.c++ 28 29-09-2004 22:44:40
Polimorfismo elevado al cuadrado. DeiF Newsgroup es.comp.lenguajes.c++ 28 29-01-2004 13:54:50





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.