AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi OO Frage: Warum kann Unterklasse Var-Typ ändern?
Thema durchsuchen
Ansicht
Themen-Optionen

OO Frage: Warum kann Unterklasse Var-Typ ändern?

Ein Thema von Ares · begonnen am 10. Okt 2007 · letzter Beitrag vom 10. Okt 2007
 
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#1

OO Frage: Warum kann Unterklasse Var-Typ ändern?

  Alt 10. Okt 2007, 15:05
Hallo!

Ich arbeite mich gerade etwas in die Objektorientierung ein und bin meinen Versuchen darauf gestoßen, dass folgendes möglich ist:

Delphi-Quellcode:
  TClass1 = class(TObject)
  private
    FTest: boolean;
  public
    constructor Create; virtual;
    property Test: boolean read FTest write FTest;
  end;

  TClass2 = class(TClass1)
  private
    FTest: string;
  public
    constructor Create; virtual;
    property Test: string read FTest write FTest;
  end;
Class2 ist also eine Unterklasse von Class1 und überschreibt den Datentyp des Feldes FTest sowie der zugehörigen Eigenschaft Test von boolean zu string.

Damit ist Class2 doch eigentlich keine Unterklasse von Class1 mehr, denn man kann ein Class1-Objekt nicht durch ein Class2-Objekt ersetzen. z.B. Hier:

Delphi-Quellcode:
var c1: TClass1;
    c2: TClass2;
begin
  c1 := TClass1.Create;
  c2 := TClass2.Create;

  c1.Test := true;
  c2.Test := 'test';

  if c1.Test then showMessage('Wahr')
    else showMessage('Falsch');
  if c2.Test then showMessage('Wahr') // kann nicht compiliert werden, da Test kein Boolean
    else showMessage('Falsch');
  
  c1 := c2;
  if c1.Test then showMessage('Wahr') // Liefer falsch
    else showMessage('Falsch');
end;
Man kann c2 also nicht im gleichen Coder verwenden wie c1 (in der If-Abfrage). Trotzdem kann man c1 c2 zuweisen...

Wäre es nicht "objektorientiert", wenn man den Typ eines Feldes in einer Unterklasse nicht ändern könnte? Bzw nur FTest: TTest1 durch FTest: TTest2 überschreiben kann wenn TTest2 eine Unterklasse von TTest1 ist?

Vielen Dank für eure Meinung hierzu!
Ares
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz