Wenn eine Methode öffentlich es bedeutet, dass andere Objekte darauf zugreifen können
Zum Beispiel:
class David {
// public method, can be use by anyone
public String getName() {
return "David";
}
}
Die Methode getName
kann von anderen Klassen aufgerufen werden, da sie öffentlich ist:
class Other {
David davidOne = new David();
String davidsName = davidOne.getName(); //<-- compiles and runs
}
Der Vorteil ist, dass man sie auch von anderen Orten aus nutzen kann.
Wenn eine Methode privat bedeutet, dass nur Objekte auf sie zugreifen können DER GLEICHEN KLASSE
Zum Beispiel in dieser neuen Definition:
class David {
public String getName() {
return "David";
}
// private method... nobody but David's "instances" can use it..
private int getAge() {
return 19;
}
}
Die Methode getAge
kann nicht von anderen Klassen aufgerufen werden, da es privat ist. Wenn Sie dies versuchen, wird der Compiler eine Fehlermeldung ausgeben:
class Other {
David davidOne = new David();
String davidsName = davidOne.getName();
int davidsAge = davidOne.getAge(); //<-- Compiler error, getAge() is not visible
}
Aber, wenn Sie es benutzen können innerhalb David Klasse:
class David {
public String getName() {
return "David";
}
// private method... nobody but David's "instance" can use it..
private int getAge() {
return 19;
}
// Here the call to "getAge()" will succeed, because it is visible
// inside the class
public boolean hasSameAgeAs( David otherDavid ) {
return this.getAge() == otherDavid.getAge();
}
}
Der Vorteil? Sie können eine Reihe von Methoden erstellen und sie privat halten, um Datenverfälschungen zu vermeiden oder generell Ihre Objekte zu schützen. gekapselt
Über Verkapselung
En OOP ( objektorientierte Programmierung ) ist es das Ziel, die Software nach realen Objekten zu modellieren.
Objekte im wirklichen Leben haben (unter anderem) Attribute und Methoden, um auf diese Attribute zuzugreifen.
Sie möchten einige dieser Methoden öffentlich machen und andere geheim halten.
Zum Beispiel kann ein Menschen Wesen, ein Herz haben. Aber es ist nicht für jeden zugänglich, das wäre gefährlich. Es ist gekapselt in unserem Körper.
Wenn wir eine Software nach einem realen Vorbild modellieren würden Menschen können wir die Methode deklarieren: heartBeat
als privat (damit niemand darauf zugreifen kann)
Auf der anderen Seite wäre es nützlich, wenn die öffentlich Methoden wie getGender
um herauszufinden, ob Ihr Menschen Instanz männlich oder weiblich ist.
Es gibt weitere Zugangsmodifikatoren wie z. B.: "protected" und "package protected" (die kein Schlüsselwort haben)
class David {
// protected method
protected int getBalance() {
return 1000000;
}
// package protected or "default" method
boolean knowsOop(){
return true;
}
}
Dort wird die Methode getBalance
kann nur erreicht werden von David
Instanzen und David
Unterklassen (erstellen Sie einen weiteren Thread für eine Unterklasse)
Die Methode knowsOop
kann von jedem innerhalb des Pakets aufgerufen werden, da David definiert ist.
Machen Sie sich keine Sorgen über diese beiden Zugriffsmodifikatoren, sie werden Sinn machen, wenn Sie mehr über OOP und Java lernen.
Schließlich sollten Sie sich wirklich Zeit zum Lesen nehmen:
http://java.sun.com/docs/books/tutorial/java/javaOO/index.html
Ich hoffe, das hilft
9 Stimmen
Sonnenlehrgang: java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
0 Stimmen
Ich unterstütze das Tutorial, oder ein grundlegendes OOP-Tutorial. Die Konzepte sind die gleichen für alle OO-Sprachen in Bezug auf Datenkapselung / Zugriff.
0 Stimmen
Was bedeutet OOP?
0 Stimmen
Objektorientierte Programmierung .
3 Stimmen
David, Sie haben noch eine Menge zu lernen. Das Sun-Tutorial kann Sie behutsam in die richtige Richtung führen.
0 Stimmen
Werden Sie das im OP hinzufügen? Ist das eine Hausaufgabe? Haben Sie das Tutorial schon durchgearbeitet? Haben Sie noch weitere Fragen?