AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung nicht über Units

Ein Thema von skyphab · begonnen am 23. Apr 2004 · letzter Beitrag vom 23. Apr 2004
Antwort Antwort
skyphab

Registriert seit: 16. Apr 2004
17 Beiträge
 
Delphi 7 Enterprise
 
#1

Vererbung nicht über Units

  Alt 23. Apr 2004, 13:22
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:
Unit2.pas

type TKlasse2 = class(TKlasse1)
  public
    procedure Test();
end;

procedure TKlasse2.Test();
begin
  Zahl := 1234;
end;
Die Eigenschaft Zahl gibts in TKlasse2 nicht. Funktioniert Vererbung nicht über unterschiedliche Units hinweg (Trotz Einbindung in uses im Interface)?
Muss ich jetzt alle Klasse in eine Unit packen, das wird ja furchtbar unübersichtlich?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Vererbung nicht über Units

  Alt 23. Apr 2004, 13:27
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:
type TKlasse1 = class
  protected
    Zahl: integer;
end;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
skyphab

Registriert seit: 16. Apr 2004
17 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Vererbung nicht über Units

  Alt 23. Apr 2004, 13:34
Vielen Dank, es funktioniert

Jetzt verstehe ich auch wo bei Delphi der Unterschied zwischen Protected und Private gemacht wird
Gottlob, doch keine einzelne Unit
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Vererbung nicht über Units

  Alt 23. Apr 2004, 13:39
Zitat von skyphab:
Vielen Dank, es funktioniert
Bitte sehr ^^

Zitat von skyphab:
Jetzt verstehe ich auch wo bei Delphi der Unterschied zwischen Protected und Private gemacht wird Gottlob, doch keine einzelne Unit
Hi,

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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
skyphab

Registriert seit: 16. Apr 2004
17 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Vererbung nicht über Units

  Alt 23. Apr 2004, 13:46
Zitat von mirage228:
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.
Wirklich? Das mit den privaten Attributen habe ich ja noch nie probiert klingt aber unsauber
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?
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Vererbung nicht über Units

  Alt 23. Apr 2004, 13:52
Zitat von skyphab:
...

Kann man dann bei protected die Attribute in der selben Unit aber anderen Klasse nicht mehr verwenden? Also wie es sein sollte?
Klassen in der selben unit sind quasi "freunde", die dürfen das (in delphi)!
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Vererbung nicht über Units

  Alt 23. Apr 2004, 22:53
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz