Eine Klasse endet Felder und Methoden, die von bestimmten anderen Klassen zugegriffen werden kann und immer die Klasse selbst, abhängig von den Zugriffsebenenmodifikatoren (privat, Standardzugriff, geschützt oder öffentlich). Sie können die Felder und Methoden als Attribute/Eigenschaften der Klasse anzeigen.
Ein Feld ist, was Sie beschreiben als "eine Variable in einer Klasse, die nicht in irgendeiner Methode ist". Ein Feld beschreibt einen Wert, den die Klasse hat, und eine Methode beschreibt, was die Klasse (oder die Objekte der Klasse) tun können.
Wenn Sie das Schlüsselwort static
für die Einfachheit dieses Beitrags ignorieren, ist eine Klasse eine Vorlage zum Erstellen von Objekten. Jedes Objekt, das Sie von einer bestimmten Klasse erstellen, wird über eigene Felder und Methoden verfügen (außer das Feld oder die Methode ist static
).
Wenn Sie das Feld einer Klasse auf private
nichts außerhalb setzen, kann die Klasse es erreichen. Nur die Klasse selbst (im Wesentlichen die Methoden der Klasse) kann sie erreichen. Gleiches gilt für private Methoden. Nur andere Methoden der Klasse können die privaten Methoden erreichen.
Betrachten Sie dieses Beispiel:
public class Person {
private String name;
public int id;
public Person(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
}
Wenn jemand die Namen dieser Person direkt Bezug auf den Namen, die sie nicht in der Lage sein, es zu tun, da der Name private
ist Acess wollte. Sie müssten dazu die Methode getName()
verwenden.
Person person = new Person(John, 5);
System.out.print(person.name); //does not work
Person person = new Person(John, 5);
System.out.print(person.getName()); //works
Das ist gut, denn wenn der Name direkt zugänglich war, kann man schreiben:
person.name = "Felicity";
und den Namen der Person ändern, was nicht erwünscht ist (wir dies mit den id
tun können, und das könnte Probleme verursachen). Dies ist nicht möglich, wenn der Name privat ist.
Eine Variable innerhalb eine Methode ist jedoch kein Feld. Dies bedeutet, dass es kein Attribut des Objekts ist. Es ist einfach eine temporäre Variable, die existiert, um der Methode zu erlauben, das zu tun, was sie tun möchte. Wenn die Methode ausgeführt wurde, wird die Variable zerstört. Eine solche Variable wie private
oder etwas anderes zu deklarieren ist völlig bedeutungslos und daher nicht erlaubt.
Sie sollten lesen [Was ist der Unterschied zwischen Feld, Variable, Attribut und Eigenschaft in Java POJOs?] (Http://Stackoverflow.com/q/10115588/5221149) – Andreas
Danke ich glaube, ich verstehe jetzt besser –