Einzelnen Beitrag anzeigen

Gonzo2

Registriert seit: 4. Nov 2007
42 Beiträge
 
#11

Re: Fragen zu OOP und Klassen

  Alt 23. Nov 2007, 09:35
Vielen Dank an alle die mit mir meine Verständnisfragen durchgenommen haben. inherited ist mir jetzt klarer. Abschließend kann man sagen, daß inherited einfach nur den Vorfahr aufruft. Was sich so einfach anhört ist Anfängern nicht sofort klar. Erst wenn man die Konsequenzen sieht wird es klarer. In einer Klasse die auf TObject aufbaut kann man in Create auf inherited verzichten, da im Create von TObject, also dessen Vorfahr, nichts passiert. Beim Arbeiten mit anderen Vorfahrklassen könnte dagegen der fehlende Aufruf von inherited böse Folgen haben, da dann der Vorfahr nicht aufgerufen wird und später einige geerbte Eigenschaften oder Methoden ins leere laufen.

Hier ein Beispiel das ich mir zum Verständnis erstellt habe. Ich hab mir eine eigene IniFile Klasse geschrieben bei der nur Create ersetzt wurde. Rufe ich kein inherited auf, hat das Konsequenzen und im Beispiel tritt bei WriteString ein Fehler auf.

Delphi-Quellcode:
type
  TMeineIniFile = class(TIniFile)
  public
    constructor Create(const FileName: string);
  end;

constructor TMeineIniFile.Create(const FileName: string);
begin
  //inherited Create(FileName); //mal mit mal ohne
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  IniFile: TMeineIniFile;
begin
  IniFile := TMeineIniFile.Create('c:\temp\tmp.ini');
  try
    IniFile.WriteString('a', 'b', 'Gefunden');
    ShowMessage(IniFile.ReadString('a', 'b', 'Nicht gefunden'));
  finally
    IniFile.Free;
  end;
end;
Zwar sind einige meiner Fragen zu inherited noch nicht beantwortet, aber an dieser Stelle genügt es. Ich hacke später nochmal nach.
  Mit Zitat antworten Zitat