![]() |
Vererbung nicht über Units
Hallo zusammen!
Ich habe mich gewundert und gewundert, bis ich endlich draufgekommen bin: Warum werden Attribute und Methoden einer Klasse nicht an eine Andere vererbt, wenn diese in einer anderen Unit steht? Also als Beispiel:
Code:
Unit1.pas
type TKlasse1 = class private Zahl: integer; end;
Code:
Die Eigenschaft Zahl gibts in TKlasse2 nicht. Funktioniert Vererbung nicht über unterschiedliche Units hinweg (Trotz Einbindung in uses im Interface)?
Unit2.pas
type TKlasse2 = class(TKlasse1) public procedure Test(); end; procedure TKlasse2.Test(); begin Zahl := 1234; end; Muss ich jetzt alle Klasse in eine Unit packen, das wird ja furchtbar unübersichtlich? :( |
Re: Vererbung nicht über Units
Deklarier Zahl nicht in private sondern in protected. damit sind variablen nur innerhalb der klasse und dessen nachfahren sichtbar. private variablen sind nur in der klasse und in klassen in der selben unit verfügbar bzw. sichtbar.
also in deinem falle:
Delphi-Quellcode:
mfG
type TKlasse1 = class
protected Zahl: integer; end; mirage228 |
Re: Vererbung nicht über Units
Vielen Dank, es funktioniert :)
Jetzt verstehe ich auch wo bei Delphi der Unterschied zwischen Protected und Private gemacht wird :-D Gottlob, doch keine einzelne Unit ;) |
Re: Vererbung nicht über Units
Zitat:
Zitat:
private bedeutet eigentlich, dass nur diese Klasse zugriff auf die Variablen dort drin hat. In Delphi ist es aber so, dass alle Klassen in der selben(!) Unit auf diese Variable zugreifen können. In Delphi8 für .NET gibt es strict private, wo die Variablen auch wirklich 100% privat sind. protected macht die Variable auch für alle Nachfahren einer Klasse "offiziell" verfügbar. mfG mirage228 |
Re: Vererbung nicht über Units
Zitat:
Ich war immer der Meinung das geht nicht, weil es an sich auch nicht sein soll *g Kann man dann bei protected die Attribute in der selben Unit aber anderen Klasse nicht mehr verwenden? Also wie es sein sollte? |
Re: Vererbung nicht über Units
Zitat:
|
Re: Vererbung nicht über Units
Moin!
Jo, das stand sogar so auch mal irgendwo bei Borland: Klassen in der gleichen Unit sind automatisch friend Klassen. In C++ kann man das selber festlegen mit den Friend Class, aber in Delphi ist das direkt von der Unit abhängig... MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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