Weiter geht es also mit Sichtbarkeit und Zugriffsrechten.
Wozu brauchen wir das? Schutzmechanismen brauchen wir nicht dazu,
um Geheimnisse zu behüten, sondern wir brauchen sie vor allen
Dingen dazu, um die Ausbreitung von Änderungen zu begrenzen.
Wenn jemand anders nicht auf die Details zugreifen kann,
kann er sich die Details auch nicht zunütze machen,
um irgendwie damit zu arbeiten.
Das heißt, wenn wir an den Details was ändern,
muss die Arbeit des anderen, die Strukturen,
die dort gemacht werden, auch nicht angepasst werden.
Deswegen sind Zugriffsrechte, Zukunftsbeschränkungen etwas Gutes, wenn sie das richtige Maß haben natürlich.
Sie sollten immer dann beschränkt sein für auf Dinge,
die man intern halten kann, weil sie nach außen hin keine Auswirkungen haben sollte.
Wir haben schon gerade für Pakete gesehen, hier gibt es
keine Zugriffsmöglichkeiten, keine Schutzmöglichkeiten, für den Zugriff.
Das ist anders als bei Paketen. Dort kann ich den
bei den Zukunft innerhalb Paketen, wenn ich dort keinen,
nicht Paprick angegeben habe, kann ich darauf nicht zugreifen.
Also hier ist die Klasse C, insofern versteckt,
vor jemandem von außen und wir haben den Schutz davor,
dass eine Änderung der Klasse C-Auswirkungen
hier draußen hat
Deswegen ist das ein Schutzmechanismus. Schauen wir uns mal an,
was es außer Public noch weitergibt. Wir kennen schon Private,
Baywitt wird verwendet dafür, dass Elemente einer Klasse,
wie Feld, Operation, Methode oder auch eine innere Klasse,
die wir eben als Spezialbestandteile hier hatten,
dass sie nicht von woanders her zugegriffen werden kann.
Das heißt, Breitet beschränkt diesen Zugriffsschutz sehr wirksam.
Unabhängig davon, dass es auch in einem Paketzugehörigkeit geben kann
und eine Vererbungsbeziehung und ob die Klasse selbst Public ist,
eine private Methode ist dann von außen
nicht zugreifbar
Wenn wir etwas weder Praktikabek noch Private noch protected angeben.
Das wäre also der Refault, ob Modifikator sozusagen,
den Unangabe wäre es, der Standardfall. Dann bedeutet es,
es ist im selben Paket sichtbar im selben Paket zugreifbar.
Und das sagen manche dazu, Pack and Sprivate,
andere Sachen, Patchet, Package Resibility.
Also wenn ich nichts angebe, im gleichen Paket.
Das gibt Ihnen als Programmierer die Freiheit, zu entscheiden,
okay, die und die Sachen haben ein bisschen mehr miteinander zu tun.
Sie haben keine soziale Distanz, muss man so sagen.
Sie dürfen also sich voneinander ein paar Sachen,
interne Sachen zugreifen
Dann ist das, bilden Sie einfach ein Paket darum.
Und dann klappt das. Protected, zugreifbar für Klasse im
selben Paket und für Subklasse. Auch in anderen Paketen. Ja,
also das ist noch mal ein bisschen speziell und das protected,
solange wie Klasse Public ist.
Wenn etwas Public gekennzeichnet ist innerhalb eines Paketes, zum Beispiel eine Klasse,
dann ist sie zugreifbar in anderen Paketen und natürlich auch in der gleichen Klasse.
Ja, das ist, sehen wir hier nochmal im Tabell,
in der Tabelle,
grün ist von außen zugreifbar
Also das A ist zugreifbar, von nirgendwo her, Hauser aus der eigenen Klasse.
Also in der Klasse ist das nur zugreifbar,
schon nicht andere Klassen des gleichen Pakets und so weiter. Wenn wir gar nichts eingeben,
dann ist es greifbar zwischen von allen Sachen innerhalb des gleichen Paketes,
hier dadurch gekennzeichnet, hier noch eine zweite Klasse ist,
protected, auch von abgeleiteten Klassen, also geerbnet lassen,
auch wenn die in anderen Paketen sind.
Und Public, alle dürfen darauf zugreifen, also hier,
hier, hier oder sogar,
auch hier oben irgendwie außerhalb
Soweit. Dazu, wenn wir nochmal zusammenfassend sagen,
diese Module dienen als Einheit,
die Einheit dient zur Strukturierung und hilft uns dabei,
die Komplexität zu beherrschen, dass sie Übersetzungseinheiten sind,
unterstützt, dass man braucht immer nur das zu übersetzen,
was man neu, was man geändert hat,
die Namensräume helfen,
dass wir nicht durch das ganze System hinweg einheitliche Namen haben müssen,
sondern dass wir Namen auch mehrfach verwenden können und gleichzeitig
industriell Kopplung und wir haben klare Export-Import-Schnittstellen
Das sind wichtige Punkte, die wir bei Java haben.
Und wir müssen, haben zusätzlich noch zu dem Paket,
zu der Moduleigenschaft, dass die Klassen auch Typen erzeugen,
von denen man Exemplare ableiten kann.
Ja, also in Java ist die Modularisierung der Klasse
explizit für den Export, beziehungsweise auf die Exportschnittstellen.
Und wir können bezüglich die Inbots bezüglich der Inbotschnittstelle,
ja, da können wir alles importieren,
wo wir den Namen davon kennen.
Ja, bei Paketen ist es auch eine explizite Schnittstelle
Soweit dazu und
dann folgt der nächste Abschnitt mit einem kleinen Quiz