2013-05-27 19 views
25

Ich habe festgestellt, dass, wenn nicht schreiben public vor einer Klasse, es funktioniert wie ein public class. Ich kann nicht verstehen warum? Es sollte einen Fehler anzeigen, wenn ich keine Klasse als public, private oder protected deklariere. Aber es funktioniert gut. Was ist der Grund?Was ist der Unterschied zwischen "public class" und "class"?

+1

[Dies wird Ihnen eine angemessene Antwort liefern.] (Http://Stackoverflow.com/a/16728381/1079354) – Makoto

+0

Sie können diesen Link verweisen mit demselben Wissen: http://stackoverflow.com/questions/614818/what-is-the-difference-between-public-private-protected-and-nothing/614844#614844 – Deepak

Antwort

24

public, protected und private sind Zugriffsmodifikatoren. Öffentlich bedeutet, dass auf das Subjekt von jeder Klasse zugegriffen werden kann, geschützt durch Unterklasse, privat durch die Klasse selbst, kein Modifikator bedeutet "Paket geschützt", so dass auf das Subjekt von Klassen desselben Pakets zugegriffen werden kann.

Betreff ist Klasse, Methode, Elementvariable.

28

Ich habe festgestellt, dass, wenn nicht öffentlich vor einer Klasse schreiben, es funktioniert wie eine öffentliche Klasse.

Nein, tut es nicht. Wenn es nicht öffentlich ist, ist die Klasse für anderen Code, der nicht im selben Paket enthalten ist, nicht sichtbar. Die Standardzugriffsfunktion (die nicht explizit angegeben werden kann) besteht darin, dass eine Klasse (oder ein anderes Mitglied) nur für anderen Code innerhalb desselben Pakets sichtbar ist.

Sie sollten die Java Language Specification section 6.6 und die Java Tutorial (Controlling Access to Members of a Class) für weitere Details lesen.

4

Klassen sind package private standardmäßig (wie beschrieben here), so verhält es sich nicht auf die gleiche Weise. Sie denken nur, dass es daran liegt, dass Sie nicht versucht haben, Ihre Klasse aus einem anderen Paket zu konsumieren.

0

Für Erklärungen der Klassen sind avaible nur zwei Stichworte:

  • öffentlichen .Beispiel: public class Studenten {// ...}
  • privates Paket (als Standard) .Beispiel: Klasse Hinweis {// ...}. Es ist nur in seinem Paket sichtbar.

Sie können private und geschützt nur verwenden, wenn Sie ein Mitglied innerhalb einer Klasse deklarieren. Beispiel:

public class Student{ 
protected Note note; 
} 
0

Wenn Sie keinen Zugriffsmodifikator gibt es standardmäßig Paket privaten Zugang ist. Die Klasse ist außerhalb des Pakets nicht zugänglich. Idealerweise sollte die JLS ein Schlüsselwort für den Paketzugang enthalten, um Verwirrung und unbeabsichtigte Konsequenzen zu vermeiden. wie

Etwas,

default class Student{} 
1

Es darf nur eine öffentliche Klasse pro .java-Quelldatei und der Name der Datei muss mit dieser öffentlichen Klasse entspricht.

Ähnliche Frage wird zuvor auf SO gefragt. Sie finden es here

0

Es funktioniert das gleiche nur, weil Sie mit nur einer Datei und in demselben Paket arbeiten.

Wenn Sie mehr als ein Paket haben, dann haben Sie das Problem. Die Klasse, die vor dem Namen der Klasse nicht "public" hat, kann nicht in einem anderen Paket erstellt werden. Sie können seinen Konstruktor nicht verwenden.Sie können nur außerhalb des Pakets, in dem die Klasse erstellt wurde, darauf zugreifen.

Verwandte Themen