Ver Mensaje Individual
  #2  
Antiguo 15-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Suponiendo que en Java sea igual que en Delphi, hasta donde yo llego un método "abstracto" en cierta clase está obligando a las clases descendientes a implementar dicho método. De otro modo (en el caso de Delphi) obtendrías un "warning" al tratar de compilar tal que así:

Cita:
[DCC Warning] Unit1.pas(31): W1020 Constructing instance of 'TMyChildClass' containing abstract method 'TMyClass.ShowMyName'
Es decir:

Código Delphi [-]
unit Unit2;

interface

type
  TMyClass = class(TObject)
  public
    function ShowMyName(): string; virtual; abstract;
  end;

type
  TMyChildClass = class(TMyClass)
  end;

implementation

end.

Al derivar la clase "TMyChildClass" de "TMyClass" estamos obligados a implementar en "TMyChildClass" el método "abstracto" "ShowMyName()". De no hacerlo así, la advertencia de antes, en tiempo de diseño, y, en tiempo de ejecución, una excepción "EAbstractError" si tratamos de ejecutar el método en cuestión.

De tal modo que tendríamos que hacer algo así:

Código Delphi [-]
unit Unit2;

interface

type
  TMyClass = class(TObject)
  public
    function ShowMyName(): string; virtual; abstract;
  end;

type
  TMyChildClass = class(TMyClass)
  public
    function ShowMyName(): string; override;
  end;

implementation

{ TMyChildClass }

function TMyChildClass.ShowMyName(): string;
begin
  result := ClassName;
end;

end.

Ya digo. Puede que vaya más allá, pero, hasta donde llego, sirve para obligar a las clases descendientes a implementar determinados métodos. Acaso algún otro compañero pueda corregirme o en todo caso proporcionar algo más de información al respecto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita