Das ganze ist eigentlich ganz einfach. Du musst nur beim erstellen des Objectes prüfen von welchem Typ es ist und den entpsrechenden Konstructor des Nachfahren aufrufen. Anschließend kannst du über die gemeinsame Methode drauf zugreifen ohne dir gedanken drüber machen zu müssen ob es ein Quader oder eine Kugel ist.
Delphi-Quellcode:
type
TGeometrie = class
public
function VolumenBerechnen: Extended; virtual; abstract;
end;
TKugel = class(TGeometrie)
public
function VolumenBerechnen: Extended; override;
end;
TQuader = class(TGeometrie)
public
function VolumenBerechnen: Extended; override;
end;
[...]
function TKugel.VolumenBerechnen: Extended;
begin
result := //Volumen für Kugel berechnen
end;
function TQuader.VolumenBerechnen: Extended;
begin
result := //Volumen für Quader berechnen;
end;
///uns so geht man dann damit um
procedure Irgendwas;
var LObj: TGeometrie;
begin
if ZeileAusDatei = Quader then //Hier entscheidet sich von welchem Typ das Object wird
LObj := TQuader.Create
else
Lobj := TKugel.Create;
//und dann einfach die gemeinsame Methode aufrufen
showMessage(FloatToStr(LObj.VolumenBerechnen));
end;