Ver Mensaje Individual
  #7  
Antiguo 31-01-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Reputación: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por seba_cipo
estoy empezando a trabajar con el tema de la POO y tengo un problema q no se como resolver:

TClase1=class(TObject)
private
public
procedure Hola;
end;

TClase5=class(TClase1)
private
public
procedure Chau;
end;

bien, la pregunta es si la Tclase5 hereda de TClase1, cuando haga

var:=tclase5.create;
var.chau; // este permitido
var.hola //NO este visible aunque este declarado en public

es decir ocultar algunos metodos de clases superiores ,, pero solo los q yo quiera..
la verdad no se si es posible,,
desde ya muchas gracias
Ahi tienes un problema de diseño que no se soluciona "ocultando métodos". Si la clase TClase5 no puede acceder al método Hola, o bien este método no tiene que pertenecer a la clase, o no tiene que estar visible, o a lo sumo sobreescrito. Yo te sugiriría pensar en clases intermedias.


Cita:
Empezado por seba_cipo
en realidad lo q quiero hacer es ocultar algun metodo de la clase (Tlist)
quiero ocultar el metodo add de Tlist ya q en mi clase lo voy a utilizar con algunas modificaciones

tclasse5=class(Tlist)
public
procedure add;
end;
No puedes ocultar un método publicado, en la lógica esto sería simplemente violado si utilizas polimorfismo y tratas a tu clase como su ancestro. Particularmente en el caso del TList, muchas clases de la VCL que manejan listas dinámicas, por ejemplo TCollection, en lugar de heredar de TList lo utilizan como internamente y redefinen solo los métodos necesarios para la clase.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita