Unterschied zwischen "strict private" und "protected" Zugriff Modifikatoren in Delphi?
aber ich Lerne Programmierung und nach die strukturierte Programmierung mit Pascal-Sprache, bin ich Anfang zu lernen, über OOP mit Delphi.
So, ich weiß wirklich nicht verstehen, der Unterschied zwischen den strict private
Unterricht und die protected
.. Also hier ist mein code, es geht um eine "Tasche" Schöpfung, es ist nur die Vorstellung meines Delphi Lektion, Lehrer zeigen uns, wie wir können Objekte erstellen:
uses
SysUtils;
Type
Tbag= class (Tobject)
strict private
FcontenM : single;
Fcontent : single;
protected
function getisempty : boolean;
function getisfull: boolean;
public
constructor creer (nbliters : single);
procedure add (nbliters : single);
procedure clear (nbliters : single);
property contenM : single read FcontenM;
property content : single read Fcontent;
property isempty : boolean read getisempty;
property isfull : boolean read getisfull;
end;
function Tseau.getisempty;
begin
result := Fcontent = 0;
end;
function Tseau.getisfull;
begin
result := Fcontent = FcontenM;
end;
constructor Tseau.creer(nbliters: Single);
begin
inherited create;
FcontenM := nbliters;
end;
procedure Tbag.add (nbliters: Single);
begin
if ((FcontenM - Fcontent) < nbliters) then fcontent := fcontenM
else Fcontent := (Fcontent + nbliters);
end;
procedure Tbag.clear (nbliters: Single);
begin
if (Fcontent > nbliters) then Fcontent := (Fcontent - nbliters)
else Fcontent := 0;
end;
Es ist also nur ein Beispiel-Objekt erstellen; ich verstehe, was ist die öffentliche Deklaration (interface zugänglich von außen), aber ich sehe nicht, was ist der Unterschied zwischen private und protected Deklarationen.. Danke für den Versuch mir zu helfen..
InformationsquelleAutor der Frage bAN | 2009-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Unterschied zwischen private, protected und public ist ziemlich einfach:
In Delphi gibt es einen "bug" lässt sich die Sichtbarkeit aller Mitglieder der öffentlichkeit innerhalb der gleichen Einheit. Die strengen Stichwort korrigiert dieses Verhalten, so dass der private ist eigentlich privat, auch innerhalb einer einzigen Einheit. Für eine gute Kapselung ich würde empfehlen immer mit dem strikten keyword.
Beispiel-code:
InformationsquelleAutor der Antwort Svein Bringsli
strict private - sichtbar und zugänglich nur von innerhalb dieser Klasse.
private - sichtbar und zugänglich nur von innerhalb dieser Klasse UND diese Klasse Einheit.
geschützt - das gleiche wie PLUS private innerhalb einer abgeleiteten Klasse
Können Sie mehr Lesen über die Idee der Kapselung hier: http://en.wikipedia.org/wiki/Encapsulation_%28computer_science%29#Encapsulation
InformationsquelleAutor der Antwort smok1
Könnten Sie ausgesehen haben, diese überall (das Stichwort wäre "zugriffsmodifizierer")
Grundsätzlich geschützt bedeutet, dass die Mitglieder sichtbar sein werden untergeordnete Klassen und in der gesamten Einheit. strenge private bedeutet, Sie haben Zugriff auf die member in der member-Methoden dieser Klasse NUR.
InformationsquelleAutor der Antwort jpfollenius
Einem Fall fehlt in den anderen Antworten:
private
und sogarstrict private
Felder von anderen Instanzen aus zugegriffen werden kann code innerhalb Ihrer Klasse:(Dies ist das gleiche Verhalten wie in Java.)
InformationsquelleAutor der Antwort mjn
Einem anderen Fall fehlt in den anderen Antworten.
Es gibt Möglichkeiten zu "verlängern" die Klasse Kapselung Regeln.
Mit Klasse Helfern, eingeführt in Delphi 8 (.NET-Kompatibilität), ist es möglich, zu umgehen
Unterschied in der Sichtbarkeit zwischen private,protected und public (und auch die strengen Notationen).
Die Klasse helper Erklärung kann in einer anderen Einheit als der original-Klasse.
Dies ist ein Beispiel :
Siehe diesen Beitrag für mehr Informationen :Zugang-a-streng geschützte-Eigentum-von-ein-delphi-Klasse.
InformationsquelleAutor der Antwort LU RD