Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Pirat3net en 6 Diciembre 2011, 22:36 pm



Título: clases heredadas
Publicado por: Pirat3net en 6 Diciembre 2011, 22:36 pm
el problema es que tengo una clase que hereda de otra clase(no abstracta)
el tema es que necesito que alguno de los metodos de la superclase se comporten de manera distinta en la clase heredada.
si no recuerdo mal si los metodos de la superclase eran abstractos, se podian modificar en la subclase, pero si no es asi, se puede? o debo crear metodos distintos en la subclass?


Título: Re: clases heredadas
Publicado por: madpitbull_99 en 6 Diciembre 2011, 22:39 pm
¿Y no has intentado reescribir esos métodos en la clase hijo?

Si he entendido bien el problema, deberías poder reescribirlos y/o usar la sobrecarga de métodos.




Título: Re: clases heredadas
Publicado por: KaL3o en 6 Diciembre 2011, 22:47 pm
Si la clase tiene aunq sea un metodo abstracto, entonces la clase es abstracta y no se pueden instanciar objetos de esa clase.

Cuando se tiene una clase abstracta, los metodos abstractos se deben definir en la clase derivada (se deben definir por obligacion)

Ahora en tu caso, simplemente como no estas usando clases abstractas, cada vez que utilizas la herencia puedes redefinir el metodo (no es necesario hacer uso de polimorfismo -osea no es necesario hacer uso de sobrecarga de metodos-) En caso que no redefinas el metodo entonces se utilizara el metodo de la superclase.

Salu2 ;)


Título: Re: clases heredadas
Publicado por: sapito169 en 6 Diciembre 2011, 23:02 pm
si pero jamas lo hagas eso es una de las peores "feture" de java  >:( cuando pasa eso inmediatamente deduce que el disño es muy malo

simplemente en la clase hija buelve a implementar la funcionalidad asi

class canino{
void rueda(){
//canino salvaje no obedece
ataca();
personamuere();
}
}

class pekines extends canino{

void rueda(){
ruedafelis();
seorinaenlaofombra();
}
}

ademas es recomendable que utilises la anotacion override asi


class pekines extends canino{

@override
void rueda(){
ruedafelis();
seorinaenlaofombra();
}
}


esa es la forma como trabajan casi todos (en realidad que usen poo es un milagro)

porfavor no lo agas la mayoria programan horrible cuando tengas clases parecidas que implementan los mismos metodos de formas diferentes creas una interfase con el metodo en comun luego haces que tus clases concretas implementen ese metodo yo voy aun mucho mas lejos e implemento una solucion mas "a la fuersa bruta" creo la interface luego una implementacion de una clase abstracta paraponer todos los metodos comunes a todas las implementaciones concretas y despues creo todas las implementacion heredando de la clase abstracta  :xD

y porfavor dinos los nombres de las clases es cuestion de vida o muerte todo puede fracasar horriblemente si lo haces mal (aunque no lo paresca) el diseño no tiene mucho que ver con complicados algritmos tiene que ver con la comunicacion y el lenguaje






Título: Re: clases heredadas
Publicado por: Pirat3net en 7 Diciembre 2011, 00:16 am
THX me resolvieron los ejemplos.el tema es que hacia time que no cojo java y estaba liado con que podia y no podia hacer, me podria haber pegado mucho tiempo probando xD;
thx