Laden...

Zugriffsmodifizierer: Zugriff auf private Member anderer Instanzen derselben Klasse

Erstellt von vitafit vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.067 Views
Thema geschlossen
vitafit Themenstarter:in
23 Beiträge seit 2011
vor 12 Jahren
Zugriffsmodifizierer: Zugriff auf private Member anderer Instanzen derselben Klasse

Guten Abend zusammen,

eine Kleinigkeit beschäftigt mich seit heute Mittag und ich will einfach nicht auf das WARUM kommen. Es geht um die Interaktionen zwischen verschiedenen Objekten bzw. Instanzen einer Klasse. Aber von Anfang an, meine Ausgangssituation ist wie folgt:
Ich habe eine Klasse klasse1, welche wie folgt aussieht:

class klasse1
    {
        private int i;

        public klasse1(int index)
        {
            this.i = index;
        }

        public void interagiere(klasse1 gegner)
        {
            gegner.test();
        }

        private void test()
        {
            Console.WriteLine(i.ToString());
        }
    }

Ich erstelle in meiner Main-Funktion zwei Instanzen von meiner Klasse:

klasse1 test = new klasse1(1);
klasse1 test2 = new klasse1(2);

und rufe die Methode interagiere (mit dem Parameter test2) auf. Funktioniert.
Auf dem Bildschirm wird eine 2 ausgegeben.

Folgende Fragen stellen sich mir nun:
Die Methode test() ist als private gekennzeichnet und sollte somit nur innerhalb der eigenen Instanz Verfügbar sein. Warum ist es allerdings möglich, auf die gleiche Methode einer anderen Instanz zuzugreifen?
Mein Zwischenstand bisher: Sobald ich 2 Objekte bzw. Instanzen der gleichen Klasse habe, können diese untereinander agieren. Versuche ich dass gleiche Konzept auf zwei verschiedene Klassen und entsprechende Instanzen zu übertragen, funktioniert es nicht. Meine Frage nun: Warum?

Vielen Dank
Mit freundlichen Grüßen
Vitafit

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo vitafit,

Die Methode test() ist als private gekennzeichnet und sollte somit nur innerhalb der eigenen Instanz Verfügbar sein.

Innerhalb einer Klasse/Struktur sind private Member zugreifbar und da beides Instanzen derselben Klasse sind, geht das.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

vitafit Themenstarter:in
23 Beiträge seit 2011
vor 12 Jahren

Ah dann war ich ja schon nah dran. Danke dir!

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo vitafit,

der Hintergrund ist, dass eine Klasse für alle ihre Instanzen zuständig ist, nicht nur für eine bestimmte. Wenn man in einer Klasse nicht auf alle privaten Member unabhängig von der Instanz sondern nur über this zugreifen könnte, wären z.B. Equals und andere Vergleichsmethoden unnötig schwer zu implementieren. Lax gesagt sind die Instanzen ein und derselben Klasse untereinander Freunde.

Das gehört aber zu den Grundlagen und sollte alles in jedem guten C# Buch stehen. Beachte insofern bitte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

herbivore

Thema geschlossen