Es gibt verschiedene Stufen der Datenkapselung:
public protected package
private
eigene Klasse
+ +
+ +
Klasse im gleichen Paket
+ +
+ -
Unterklasse im anderen
Paket +
+ -
-
Keine Unterklasse, anders
Paket +
- -
-
- private:
Die Methode bzw. Variable ist nur innerhalb der eigenen
Klasse verfügbar, extern ist sie unsichtbar und sie ist auch nicht
vererbbar.
- protected:
Von der eigenen Klasse und von allen abgeleiteten Klassen
kann die so deklarierte Methode bzw. Variable benutzt werden, aber nicht
von anderen, unabhängigen Klassen.
- package visibility: (wird verwendet,
wenn kein Schlüsselwort angegeben wird)
Die Methode bzw. Variable ist nur sichtbar in der eigenen
Klasse und in allen Klassen desselben Pakets (Ein Paket wird durch "package
<Paketname>" deklariert und alle folgenden Klassen gehören zu diesem
Paket; siehe Beispiel).
- public:
Mit "public" deklarierte Funktionen/Variablen können
von überall aus verwendet werden.
package shapes;
public class Circle {
protected double x, y;
protected double r;
private static final double
MAXR = 100.0;
private boolean check_radius(double
r) { return (r <= MAXR); }
public Circle(double x, double
y, double r) {
this.x = x; this.y = y;
if (checkradius(r)) this.r = r;
else this.r = MAXR;
}
public Circle(double r)
{ this(0.0, 0.0, r); }
public Circle() { this(0.0,
0.0, 1.0); }
public void moveto(double
x, double y) { this.x = x; this.y = y; }
public void move(double
dx, double dy) { x += dx; y += dy; }
public void setRadius(double
r) { this.r = (check_radius(r))?r:MAXR; }
public final double getX()
{ return x; }
public final double getY()
{ return y; }
public final double getRadius()
{ return r; }
}