Hallo!
Wieso kann man auf Methoden in einer abgeleiteten Klasse, welche NICHT in der Basisklasse enthalten sind nur bedingt zugreifen? <br>
Folgendes Problem: <br>
--- Basisklasse --- <br>
TBaseClass = class
procedure MachIrgendWas; virtuel; <br>
end; <br>
<br>
--- Abgeleitete Klasse --- <br>
TMyClass = class(TBaseClass)
procedure MachIrgendWas; override; <br>
procedure NeueMethode; <br>
end; <br>
--- Hauptprogramm --- <br>
TMainForm = class(TForm) <br>
TheClass: TBaseClass; <br>
TheClass2: array[0..1] of TBaseClass; <br>
end; <br>
procedure TMainForm.Create;<br>
begin <br>
TheClass := TMyClass.Create; <br>
TheClass.NeueMethode; // Geht nicht, da NeueMethode nicht in TBaseClass <br>
TMyClass(TheClass).NeueMethode; // Geht, da Typumwandlung !? <br>
TheClass2[0] := TMyClass.Create; <br>
TheClass2[0].NeueMethode; // Geht !
end; <br>
<br>
Kann mir jemand erklären warum ??!! <br>
Danke <br>
<br>
Terry <br>
Wieso kann man auf Methoden in einer abgeleiteten Klasse, welche NICHT in der Basisklasse enthalten sind nur bedingt zugreifen? <br>
Folgendes Problem: <br>
--- Basisklasse --- <br>
TBaseClass = class
procedure MachIrgendWas; virtuel; <br>
end; <br>
<br>
--- Abgeleitete Klasse --- <br>
TMyClass = class(TBaseClass)
procedure MachIrgendWas; override; <br>
procedure NeueMethode; <br>
end; <br>
--- Hauptprogramm --- <br>
TMainForm = class(TForm) <br>
TheClass: TBaseClass; <br>
TheClass2: array[0..1] of TBaseClass; <br>
end; <br>
procedure TMainForm.Create;<br>
begin <br>
TheClass := TMyClass.Create; <br>
TheClass.NeueMethode; // Geht nicht, da NeueMethode nicht in TBaseClass <br>
TMyClass(TheClass).NeueMethode; // Geht, da Typumwandlung !? <br>
TheClass2[0] := TMyClass.Create; <br>
TheClass2[0].NeueMethode; // Geht !
end; <br>
<br>
Kann mir jemand erklären warum ??!! <br>
Danke <br>
<br>
Terry <br>
Comment