Kapselung: Zugriff auf "private"-Elemente



  • akari schrieb:

    Korrekt.

    Wunderbar 🙂

    Vielen Dank und bis zum nächsten Mal,
    Gnirx



  • Hi!

    Falsch, auch befreundete Klassen dürfen das...

    grüße



  • wenn mans genau nehmen will, ist der satz "_niemand_ darf von außen auf private membervariablen zugreifen" völlig korrekt, denn eine instanz der klasse greift nicht von _außen_ auf die variable zu 😉

    und das mit den friends ist so eine sache für sich. ich bin eh der meinung, dass die dinger aus dem standard geschmissen gehören.



  • blob schrieb:

    und das mit den friends ist so eine sache für sich. ich bin eh der meinung, dass die dinger aus dem standard geschmissen gehören.

    naja, solange eine klasse ihre freunde deklariert und nicht umgekehrt, ist doch alles in ordnung. das erspart einem arbeit, aber verletzt das kapselungs-gebot nicht zwingend, wenn die friend-deklarationen innerhalb einer geschlossenen sinneinheit stattfinden.

    (außerdem bist du nur ein unreg, auf dich hört kein standard-kommitee 🤡 )



  • Hi!

    Ich halte Freundschaften zwischen Klassen/Methoden auch für recht "tricky", aber auch sehr hilfreich teilweise. Also etwas was mit bedacht eingesetzt ruhig im Standard bleiben sollte! 🙂

    grüße



  • blob schrieb:

    wenn mans genau nehmen will, ist der satz "_niemand_ darf von außen auf private membervariablen zugreifen" völlig korrekt, denn eine instanz der klasse greift nicht von _außen_ auf die variable zu 😉

    Wobei sich mir dabei die Frage stellt, _warum_ die obige Konstruktion möglich ist. Ist der Hintergrund einfach der, dass man sonst kaum eine Chance hätte, Objekte zu kopieren? Man müsste die Kapselung ja praktisch vollständig aufgeben, da man ja jede (private) Membervariable doch wieder nach außen liefern müsste...

    Grüße,
    Gnirx



  • Hallo

    das ist wohl genau der Grund dafür.

    bis bald
    akari



  • Wieso wird hier etwas nach aussen geliefert?

    Du befindest Dich innerhalb einer Methode der Klasse X. Dort darfst Du auf alle (auch private) Elemente der Klasse X zugreifen. Dass das nur für "this" gilt ist nirgendwo gesagt. Wo ist da für Dich das "von aussen"?



  • Hi!

    Richtig, die einzigen "Dinge" die von außen auf private Member einer Klasse zugreifen können sind befreundete Methoden/Klassen.

    grüße



  • es wäre ja auch blödsinn, wenn niemand (nichtmal die klasse selber durch ihre eigenen methoden) auf die attribute zugreifen könnte!

    Dann hast eine klasse mit attributen, die aber nie geändert, gesetzt oder ähnliches werden könnte....für was würdest due klasse denn dann brauchen??



  • LordJaxom schrieb:

    Du befindest Dich innerhalb einer Methode der Klasse X. Dort darfst Du auf alle (auch private) Elemente der Klasse X zugreifen. Dass das nur für "this" gilt ist nirgendwo gesagt. Wo ist da für Dich das "von aussen"?

    Danke für die Erklärung - da lag wohl mein Fehler: Ich habe zu sehr an einzelne _Instanzen_ der Klasse X gedacht. Von diesem Standpunkt aus gesehen finde ich es durchaus "überraschend", dass die Instanz instanz1 auf die privaten Member von instanz2 zugreifen darf.

    Betrachtet man das ganze aber von deinem "klassenbezogenen" Standpunkt aus, gibt das aber plötzlich irgendwie Sinn.

    Viele Grüße,
    Gnirx



  • naja, von instanz2 kannst du auf die privaten member von instanz2 zugreifen!



  • ser1al schrieb:

    naja, von instanz2 kannst du auf die privaten member von instanz2 zugreifen!

    Sagblos! 😮


Anmelden zum Antworten