Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2007
supermilloriver supermilloriver is offline
Miembro
 
Registrado: jul 2005
Posts: 32
Poder: 0
supermilloriver Va por buen camino
Cool 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
Responder Con Cita
  #2  
Antiguo 21-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 21-03-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
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
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #4  
Antiguo 21-03-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 22-03-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡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.
Responder Con Cita
Respuesta



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
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TToolbar heredado y posición de nuevos TToolButtons oliverinf OOP 4 06-07-2015 22:18:21
Problemas con un componente "botón" heredado de TCustomControl pascalutn2003 Varios 4 31-08-2006 01:08:21
Metodo locate fefe13 Conexión con bases de datos 3 06-11-2005 13:09:22
Los eventos y un componente heredado de TGraphicControl zuriel_zrf OOP 1 01-10-2004 00:55:32
¿Cómo puedo llamar al método heredado de una clase que no es el ancestro directo? sarackganda OOP 4 15-12-2003 22:19:49


La franja horaria es GMT +2. Ahora son las 16:07:05.


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
Copyright 1996-2007 Club Delphi