Modifiers in Klassen, Methoden und Instanzvariablen bedeuten nicht immer dasselbe. Hier eine Zusammenstellung.
Modifier | class | method | member variable |
public | Die Klasse ist von überhalher sichtbar. In einer Kompilationseinheit kann es aber auch nur Klassen haben, die nicht public sind. Maximal ist eine Klasse public: Diese Klasse muss dann aber zwingend auch gleich heißen wie die Komilationseinheit. | public-Methoden sind von überalher sichtbar (s. Sichtbarkeit). | public-Member-Variablen sind von überalher sichtbar (s. Sichtbarkeit). |
protected | -- | protected-Methoden sind in Subklassen sichtbar (s. Sichtbarkeit). | protected-Member-Variablen sind in Subklassen sichtbar (s. Sichtbarkeit). |
private | -- | private-Methoden sind nur innerhalb der definierenden Klasse sichtbar (s. Sichtbarkeit). | private-Member-Variablen sind nur innerhalb der definierenden Klasse sichtbar (s. Sichtbarkeit). |
abstract | Bei abstrakten Klassen handelt es sich um solche, die als Schablone für Subklassen dienen. Jede nicht finale Klasse kann als abstract taxiert werden. Ist jedoch eine einzige Methode abstract, so muss auch die Klasse abstract sein. abstract geht nicht zusammen mit final. | Abstrakte Methoden (abstract) haben keine Implementation. Diese Methoden müssen in direkten oder indirekten Subklassen definiert (sprich implemntiert) werden. abstract geht nicht zusammen mit final. | -- |
final | Finale (final) Klassen können nicht durch Vererbung verfeinert werden: sie haben also keine Subklassen oder m. a. W. sie können nicht zu Superklassen werden. final geht nicht zusammen mit abstract. | Finale (final) Methoden können nicht überschrieben werden. final geht nicht zusammen mit abstract. | Der Wert bei finalen Variablen (Member Variable, aber auch lokale Variablen) kann nur einmal gesetzt werden. Die Variable behät diesen Wert bis zum Programmende. |
static | -- | Um statische Methoden (static) aufzurufen, brauche ich keine Objekte. Ich kann diese Methoden direkt auf der Klasse aufrufen. Beispiel Math.random(). | Statische Member Variablen sind Klassenvariablen. Sie werden beim Anlegen eines Objektes nicht neu angelegt. Bei nicht-statischen Variablen wird für jedes Objekt wieder Speicher bereitgestellt, der den Wert der (Member)Variablen aufnehmen kann. Bei statischen Variblen wird nur einmal (beim Erzeugen der Klasse) Speicher für den Variablenwert bereitgestellt. |
native | -- | Hierbei handelt es sich um Methoden, die von der virtuellen Maschine (typischerweise) aus dynamischen Libraries (*.dll, *.so) hinzugeladen werden. native geht nicht zusammen mit strictfp. | -- |
transient | -- | -- | Transiente Attribute werden beim Serialisieren nicht berücksichtigt. |
strictfp | Jede Methode in der Klassw wird strictfp. Weil Konstruktoren nicht mit strictfp bezeichnet werden können, ist dies die einzige Möglichkeit Konstruktoren als strictfp zu definieren. | double und float Berechnungen werden mit dem FP-strict Algorithmus berechnet. Siehe auch keyword strictfp. strictfp geht nicht zusammen mit native. | -- |