Autor Beitrag
Daniel L.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Fr 19.11.10 23:19 
Hallo,

ich hätte da noch mal ein Objekt-Frage.

Bewirken die Zuweisungen an Obj in Zeile 20 - 22 das Gleiche?
Obj := ErbObj ist natürlich keine Umwandlung, aber es scheint den Gleichen Effekt zu haben



ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
type

  TObj = class
  .....
  end;

  TErbObj = class (TObj)
  ..... 
  end;



procedure TForm1.Button1Click(Sender: TObject);
var Obj : TObj;
   ErbObj : TErbObj;
begin

 ErbObj := TErbObj.Create;

 Obj := ErbObj as TObj;
 Obj := TObj (ErbObj);
 Obj := ErbObj;

 end;
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 19.11.10 23:26 
In eine Vaterklasse muss nicht umgewandelt werden, da der Vater ja keine Methoden oder Attribute hat, die die Kindklasse nicht hat. Das ist ja das tolle an Vererbung: Ich kann mir eine Klasse definieren TGeometricalObjectund davon meinetwegen TTriangle, TRectangle, etc. ableiten und zum Beispiel alle in einem array of TGeometricalObject speichern.
Greift man dann auf die Elemente dieses arrays zu, so kann man dann natürlich nur auf die Methoden und Attribute zugreifen, die schon in der Vaterklasse definiert sind. Ansonsten muss man in den Kind-Typ konvertieren.
Wenns nicht so wäre, würden abstrakte Klassen auch nicht so viel Sinn machen.