Ich habe gerade etwas bemerkt, das ich vorher nie realisiert habe. Es stellt sich heraus, dass diese Klasse in C # gültig ist:
%Vor%So können verschiedene Instanzen derselben Klasse auf die privaten Mitglieder von einander zugreifen.
Bis jetzt dachte ich, dass die privaten Mitglieder eines Objekts nur von diesem Objekt und nicht von anderen Instanzen der gleichen Klasse erreicht werden können. Es ist ein wenig überraschend, dies herauszufinden.
Ist dies in allen gängigen objektorientierten Sprachen der Fall? Es ist nicht intuitiv für mich.
Dies ist das gleiche wie in C ++ und Java: Die Zugriffskontrolle funktioniert pro Klassenbasis, nicht pro Objekt.
In C ++ wird die Java und C # Zugriffskontrolle als statisches Kompilierzeitmerkmal implementiert. Auf diese Weise gibt es keinen Laufzeitaufwand. Auf diese Weise kann nur eine Kontrolle pro Klasse implementiert werden.
Wie würden Sie einen Kopierkonstruktor für eine Klasse erstellen, die nicht ihren gesamten internen Status durch öffentliche Methoden verfügbar macht?
Betrachten Sie etwas wie folgt:
%Vor% Die öffentliche Schnittstelle von Car
stellt ihr Engine
nicht zur Verfügung, aber Sie brauchen es, um eine Kopie zu erstellen.
Tags und Links oop