Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Visual C# 2012 Grundkurs

Access Modifiers

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Als Access Modifiers werden in C# Schlüsselwörter bezeichnet, welche den Zugriff auf Klassen und deren Elemente regeln.

Transkript

In diesem Abschnitt möchte ich die sog. Access Modifiers zeigen. Dies sind Schlüsselworte, die den Zugriff auf Klassen regeln. Wenn ich eine solche Klasse definiere, ist diese Klasse innerhalb meines "Assemblys" sichtbar. Sie ist aber nicht über die "Assembly"-Grenzen hinweg sichtbar. Dies kann man relativ schnell zeigen, indem ich einfach eine "Class Library" als neues Projekt anlege. Da habe ich so eine "Class 1" drin. Nun benenne ich das Ganze um z.B. in "Class". Als nächstes brauche ich eine Referenz für diese Bibliothek. Jetzt muss ich hier noch den NameSpace einfügen. Und jetzt sollte es eigentlich möglich sein, auf dieses MyClass irgendwie zuzugreifen. Die ist also jetzt in diesem NameSpace "MyLip.", schreibe ich hier und was kommt da: Nichts - eben weil diese Klasse nicht zugreifbar ist. Sie ist sozusagen "internal". Also so ähnlich wie diese Klasse hier. Die kann also innerhalb von anderen Klassen als gleiche Assembly verwendet werden, wie man ja sieht, und da hat der Compiler kein Problem. Aber diese andere Klasse, da hat der Compiler ein Problem, weil er kennt sie nicht. Besser gesagt, der Compiler sieht schon, dass sie da ist, aber er sagt, sie ist halt nicht zugreifbar, eben wegen ihres Protection Levels. Und jetzt gehe ich zurück und deklariere diese Klasse als "public" und rekompiliere und siehe da - alles funktioniert. Das ist also dieser Public Modifier. Jetzt gibt es aber noch andere Möglichkeiten und das wäre z.B. das Protected-Element. Da wird es jetzt, bei Klassen zumindest, höchst interessant. Ich kann nämlich innerhalb einer Klasse hier eine weitere Klasse definieren. Jetzt ist die Frage: Wie kann ich auf diese Nested Class hier zugreifen? OK probieren wir es einmal mit "class.nestedclass", geht aber nicht. Es geht auch so nicht. Es wird einfach schlichtweg nicht erkannt. Warum? Weil jedes Mitglied einer Klasse, und in dem Fall ist diese neue Klasse ja ein Mitglied, ist privat. Und "privat" heißt, es ist nur innerhalb der Klasse sichtbar. Also das hier, das ist ja ein Mitglied meines Assemblys. Da ist ja keine Klasse außen rumgewickelt. Als ist das internal. Das ist innerhalb des Assemblys sichtbar. Aber das hier, das ist nicht ein Mitglied des Assemblys, das ist ein Mitglied der Klasse. Alle Mitglieder, die keine Access Modifiers haben, die sind innerhalb einer Klasse privat. Um also diese Nested Class außerhalb sichtbar zu machen, müssen Sie jetzt hier, wie halt auch eine Variable, wenn ich die außerhalb sichtbar machen will, oder eine Methode müsste hier "public" sein. Dann könnte ich diese Klasse auch ansprechen, und alles wäre wunderbar. Wenn ich jetzt hier "protected" schreiben würde, wäre diese Klasse wieder nicht sichtbar. Folgende Frage ist jetzt berechtigt: Wo wäre denn jetzt das sichtbar, was "protected" ist? Im Übrigen: Ich könnte jetzt hier eine Variable, die "protected" ist, anlegen oder eine Methode. Ich könnte auf all diese Sachen hier nicht zugreifen, eben weil es "protected" ist, also es heißt, nicht sichtbar. Ich kann das aber ändern, indem ich z.B. diese "Class Programm" jetzt von "Class" ableite. Nämlich, alles, was "protected" ist, ist entweder nur in der Klasse selbst, also z.B. hier das .i, das wäre hier sichtbar. Alles, was protected ist, ist entweder in der Klasse selbst oder in Klassen, die von ihr abgeleitet sind, sichtbar. Aber da die Klasse "Programm" ja jetzt von "Class" abgeleitet ist, kann ich jetzt hier auch auf alles zugreifen, was ich von dieser Klasse geerbt habe. Das geht aber jetzt nicht so, hier erscheint die Klasse eben jetzt als fremd, sondern ich müsste es anders machen, ich müsste also so ein Programm P=New Programm machen. Und jetzt kann ich auf all diese Elemente zugreifen, die von der Klasse Class geerbt worden sind. Also, dieses "I" oder die Methode "Fu". Das ist "Protected". Jetzt ist die Frage: Wie verhält es sich mit "Protected" über die Assembly-Grenze hinweg? Dazu gehe ich jetzt gerade noch in diese Bibliothek hinein und mache jetzt hier ein paar "Protected"-Elemente. Diese "My Class" hat also jetzt auch eine Variable "I" und so ein "Fu". Und jetzt gehe ich zurück und leite das nicht mehr von dem "Class" ab, sondern von dem "My Class". Vielleicht benenne ich die überhaupt mal um in "Internal Class", also das ist diese Klasse, die jetzt intern im "Assembly" ist. Und dieses "My Class" benennen wir auch um "External". Dann wissen wir, bis schen besser, womit wir es zu tun haben. So, das ist jetzt von External Class abgeleitet. So. Ach, das brauche ich nicht. So, gut. Kann ich also jetzt über die Assembly-Grenzen hinweg diese Elemente der External Class erben? Und die Antwort ist, ja, ich kann. Also diese Elemente stehen uns zur Verfügung. Ich rekompiliere jetzt mal. Da haben wir jetzt nochmal einen Fehler, dass diese Methode keinen Body hat. Und jetzt haben wir nur noch eine Warnung, dass diese Variable I nirgendwo benutzt wird. Damit können wir im Augenblick leben. Das war es so weit zu den Access Modifiers. Also das heißt, das sind Schlüsselworte, mit denen wir den Zugriff auf Mitglieder von Klassen, aber auch den Zugriff auf Klassen selbst bestimmen können.

Visual C# 2012 Grundkurs

Schreiben Sie eigene Programme in C# und lernen Sie dazu alle Schlüsselwörter und die meisten Konstrukte kennen, um sicher mit dieser Programmierspreche umzugehen.

7 Std. 1 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!