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"?
Antwort
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.
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.
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.
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;
}
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{}
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
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.
- 1. iPhone SDK: Was ist der Unterschied zwischen #import und @class?
- 2. C# 2015 Public Class
- 3. public class imagehandler: IHttpHandler
- 4. public static class oder const
- 5. Was ist der Unterschied zwischen Business Class und Domain-Klasse? Was ist mit persistenten Klassen gemeint?
- 6. Unterschied zwischen $ ("# id .class") und $ ("Klasse.", $ ("# Id"))
- 7. public class Mitglied sichtbar Abkömmlinge
- 8. Was ist der Unterschied zwischen der neuen Some :: Class und Some :: Class-> new() in Perl? Vor
- 9. Was ist „Class :: *“
- 10. Was ist der Unterschied zwischen Struct Based und Class Based Singletons?
- 11. Was ist der Unterschied zwischen "Vorlage <class T>" und "Vorlage <typename T>"?
- 12. Was ist der Unterschied zwischen Klassenbibliothek und .NET Core Class Library-Vorlagen?
- 13. Palindrome Service Class und Client Class
- 14. Unterschied zwischen header-bar und class = bar-header
- 15. Was Unterschied zwischen Abschnitt Tag in HTML5 und gleichen Abschnitt ist in div class = "section" definieren
- 16. Python: Hybrid zwischen regulären Verfahren und Class
- 17. Was ist der Unterschied zwischen `==` und `ist`?
- 18. Wo ist der Unterschied zwischen [MyClass Alloc] und [[Self Class] Alloc]?
- 19. Was ist die Zukunft von Class :: DBI?
- 20. Was ist "Selbst" in einem Class
- 21. Was ist der Unterschied zwischen #import und @class, und wann sollte ich einen über den anderen verwenden?
- 22. C++ Template Class mit Class Member
- 23. .NET Class Loader - Was ist das?
- 24. Inhalt zwischen zwei span class
- 25. Bedeutung von .this und .class in Java
- 26. .class vs .java
- 27. Was bedeutet der Begriff "Custom Class"?
- 28. Was ist der Unterschied zwischen Erweiterungsmethode und statischer Methode?
- 29. Was ist der Unterschied zwischen:.! und: r !?
- 30. Was ist der Unterschied zwischen Difftime und '-'?
[Dies wird Ihnen eine angemessene Antwort liefern.] (Http://Stackoverflow.com/a/16728381/1079354) – Makoto
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