Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ocultamiento de método heredado (https://www.clubdelphi.com/foros/showthread.php?t=41640)

supermilloriver 21-03-2007 12:38:51

Ocultamiento de método heredado
 
Hola!
Tengo creada una cierta jerarquía de clases.
Hay una subclase que pertenece a mi jerarquia, porque necesita heredar todo de su clase padre, pero solo con una diferencia. Hay un método de su clase padre que no quiero que herede, dicho método es público, ¿puedo ocultarlo de alguna manera? Al momento como para salir del paso, lo estoy reintroduciendo pero dentro no hace nada, me gustaria hacer algo más prolijo...

muchas gracias
Gabriel

Neftali [Germán.Estévez] 21-03-2007 12:59:42

Cita:

Empezado por supermilloriver
Hay un método de su clase padre que no quiero que herede, dicho método es público, ¿puedo ocultarlo de alguna manera?

Si heredas un objeto lo heredas completamente. No puedes especificar que una parte no herede.
¿Qué significa ocultarlo? ¿Dónque quieres que no salga?

La única opción que le veo es la que estás implementando.

poliburro 21-03-2007 16:28:40

La única manera es que el método en la clase padre lo hagas privado.

puesto que recuerda que cuando heredas, el objeto toma las características del padre, y si ese método es público, pues lo estarás heredando.


Tengo entendido que en java y .Net puedes especificar métodos no heredables, pero en delphi tengo entendido que no es algo que tengamos implementado.

suerte

Delphius 21-03-2007 16:50:08

mmmm... tal vez... si....
 
Hola supermilloriver,
De acuerdo a tu jerarquía ¿Existen otras potenciales clases que obedezcan este comportamiento? ¿Son demasiadas? las respuestas a estas dos preguntas son afirmativas... se podría tratar de un error en el diseño. Lo mejor sería replantear la jerarquía y desarrollar clases del modo tal que los que tengan los métodos/propiedades a heredar por un lado y los que sabes que no van a heredarse por otro lado. O también, que sería más recomendable... buscar un término intermedio entre la jerarquía que tienes y esta opción.

Esto no entiendo:
Cita:

Empezado por supermilloriver
Al momento como para salir del paso, lo estoy reintroduciendo pero dentro no hace nada, me gustaria hacer algo más prolijo...

¿A que te refieres con reitroduciendo?
Otra opción sería que a ese método lo declares como virtual y abstracto y en la clase hijo simplemente al declararlo lo dejas vacio.

Cita:

Empezado por poliburro
La única manera es que el método en la clase padre lo hagas privado.

puesto que recuerda que cuando heredas, el objeto toma las características del padre, y si ese método es público, pues lo estarás heredando.

poliburro, esto no sería conveniente. Pues puede afectar a otras ramas en la jerarquía de clases. Lo cual conduciría a otro error de diseño.

Yo optaría por tratar de redefinir la jerarquía, pero no cambiar el método a privado.

Saludos,

Al González 22-03-2007 05:20:56

¡Hola a todos!

Cita:

Empezado por Delphius
...¿A que te refieres con reitroduciendo?...

Supongo que Gabriel se refiere a la directiva Reintroduce.

Gabriel: ¿por qué no nos muestras esas clases, o por lo menos una parte de ellas, para entender mejor el problema que planteas?

Un abrazo oculto.

Al González. :)


La franja horaria es GMT +2. Ahora son las 21:38:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi