Client-Programmierer: Ein Klassenkonsument, der Datentypen in seiner Anwendung verwendet. Sein Ziel ist es, verschiedene Klassen für eine schnelle Anwendungsentwicklung zu sammeln.
Klassenersteller: Ein Programmierer, der einen neuen Datentyp mit dem Ziel erstellt, eine Klasse zu erstellen.
Gründe für die Existenz einer Zugriffskontrolle: a. Um zu verhindern, dass Client-Programmierer Teile berühren, die sie nicht berühren sollten, b. um es Bibliotheksdesignern zu ermöglichen, die internen Arbeitsmethoden von Klassen zu ändern 🎜>
Die vier Schlüsselwörter von Java: public, protected, default, private (sie bestimmen, wer verwenden kann, was unmittelbar danach definiert wird) Anwendungsbereich durch durch “ ∨ ∨ ∨ × × (Auf geerbte Klassen kann zugegriffen werden und dieselben Berechtigungen wie auf private) ∨ × × × (Paketzugriffsberechtigungen, d. h. Zugriff auf das gesamte Paket) Ersteller und Elemente, auf die niemand außerhalb der internen Methoden des Typs zugreifen kann) Das Folgende ist eine detaillierte Erklärung unter Verwendung von Code (erstellen Sie vier Klassen, Person, Schüler, Lehrer, Eltern und eine Testklasse)Die Ergebnisse der Testklasse zeigen, dass die Öffentlichkeit auf die oben genannten zugreifen kann Verwenden Sie dieselben vier Klassen, um geschützt zu testenNachdem die Uanme in „Person“ in „geschützt“ geändert wurde, wird die Klasse Eltern melden einen Fehler. Das Feld Person.uname ist nicht sichtbar (was darauf hinweist, dass es nicht übergreifend gepackt werden kann)
package com.zq.demo.test1; /** * 类内 * @author Administrator */ public class Person { public String uname = "王五"; public void introduceMyself(){ System.out.println(uname); } } package com.zq.demo.test1; //同一个包 public class Student { Person p = new Person(); public void test(){ System.out.println(p.uname); } } package com.zq.demo.test1; //子类 public class Teacher extends Person{ public int age; Person p = new Person(); public void test1(){ System.out.println(p.uname); } } package com.zq.demo.test2; //不同包 import com.zq.demo.test1.Person; public class Parents { public String uname = "haha"; Person p = new Person(); public void test2(){ System.out.println(p.uname); } }
Die anderen drei haben keine Auswirkungen
Dies zeigt an, dass die anderen drei außer paketübergreifend keinen Einfluss auf den Zugriff haben
privat
Der Zugriff ist nur in dieser Klasse möglich, aber möglich Zugriff mit Hilfe der Set- und Get-Methoden von uname in der Person-Klasse
defaultAuf die Beschreibung der Testergebnisse kann nur in diesem Paket zugegriffen werden, auch in anderen Paketen. Es handelt sich um eine Vererbungsbeziehung und der Zugriff ist nicht möglich