![]() |
Abstract
Ich muss eine Klasse TGeomFigur erstellen die dann als nachfolger Tquadrat und Tdreieck haben wird.
Ich hab folgendes programmiert.
Delphi-Quellcode:
nun zu meiner frage. soll ich die propertys auch unter protected geben? weil sonst könnte ja jemand zugreifen und da gibts nen fehler. oder?
TGeomFigur = class(TObject)
protected function GetUmfang : real; virtual; abstract; function GetFlaeche : real; virtual; abstract; public property Umfang : real read GetUmfang; property Flaeche : real read GetFlaeche; end; |
Re: Abstract
Regel 1: Nie Objekte mit abstrakten Methoden instanziieren! :mrgreen:
Da du TGeomFigur als Basisklasse nutzt (mit abstrakten Methoden), kannst du die Properties gerne unter public lassen. Aber nur unter einer Bedingung: nie TGeomFigur direkt instanziieren, sondern nur Nachfahren. |
Re: Abstract
dann kann ich ja alles unter public geben wenn ich es sowieso nie instanziere?
|
Re: Abstract
Das zu tun steht dir natürlich frei, aber wenn du bereits eine ReadOnly-Property hast, warum willst du dann noch den Getter zeigen?
|
Re: Abstract
ich bin ein bisschen verwirrt. wenn ich es jetzt als protected hab kommt es dann in der abgeleiteten klasse als private oder public?
|
Re: Abstract
In einer abgeleiteten Klasse kommt das dann auch unter protected, du kannst es aber nach Public schieben. Nach private geht auf keinen Fall, die Sichtbarkeit von etwas zu verringern wäre Unsinn...
|
Re: Abstract
wie kann ich das nach public schieben?
|
Re: Abstract
indem du die entsprechende funktion überschreibst und das ganze im public-teil machst.
|
Re: Abstract
Delphi-Quellcode:
müsste klappen zum verschieben der Sichtbarkeit ;)
TGeomFigur = class(TObject)
protected function GetUmfang : real; virtual; abstract; function GetFlaeche : real; virtual; abstract; property Umfang : real read GetUmfang; property Flaeche : real read GetFlaeche; end; TRechteck = class(TGeomFigur) protected function GetUmfang : real; override; function GetFlaeche : real; override; public property Umfang: real; end; |
Re: Abstract
Zitat:
Delphi-Quellcode:
TRechteck = class(TGeomFigur)
protected function GetUmfang : real; override; function GetFlaeche : real; override; public property Umfang; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 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-2025 by Thomas Breitkreuz