Seite 21

Modifiers


Modifiers werden jeweils class, dem Methodenbezeichner oder der
Typdeklaration vorgestellt. 
Es ist möglich mehrere Modifiers in Kombination einzusetzen. Es gibt
jedoch Ausnahmen die man bei Bedarf kontrollieren muß.
1)  für Klassen
abstract
- Vorgeben einer Klassenstruktur
- keine konkrete Instantiierung eines Objekts erlaubt
- ableiten einer Unterklasse -> instantiieren der Objekte
final
- Ableiten von Unterklassen nicht möglich
- Überschreiben von Methoden nicht möglich
strictfp (1.2)
- Deaktivieren der erweiterten Gleitpunkt-Darstellung 
  (nach IEEE 754 mindestens 43 bzw. 79 Bit) in allen
  Methoden der Klasse
2) für Methoden
final
- Methode nicht überschreibbar
static
- Klassenmethoden
- gelten implizit als final und können nicht überschrieben werden
- es kann nur auf Datenelement und Methoden zugegriffen werden
  die ebenfalls static sind.
- es ist Möglich auf solche Methoden via Objekt zuzugreifen.
  => jedoch nicht empfehlenswert (schlechte Lesbarkeit des
       Programms)
native
- Einbinden von Programmcode einer anderen 
  Programmiersprache
synchronized
- Wichtig bei Verwendung mehrerer Threads (Details bei
   Bedarf später)
abstract
- nur in abstract Klassen erlaubt
- legen lediglich die Aufrufstruktur fest nicht die Implementierung
strictfp (1.2)
- die erweiterte Gleitpunkt-Darstellung wird deaktiviert.
3) für Daten
final
- Deklaration von Konstanten
- Wertzuweisung nur einmal möglich
public class FinalDemo {
    final int x = 100;   // "normale" Konstante  
    final String s;      // leeres Final
  
    // Zuweisung zur Laufzeit im Konstruktor
    public FinalDemo(String s) {
      this.s = s;
    }
  
    // statisches leeres Final
    final static int staticFinal;
  
    // Zuweisung beim Laden der Klasse
    // in statischer Initalisierung
    static {
       staticFinal = 111;
    }
  
  }
static
- Datenelement ist allen Exemplaren der Klasse zugeordnet
- physikalisch für alle Objekte einer Klasse gleich
- solche Variablen werden auch Klassenvariablen genannt
volatile
- bei Zugriff aus mehreren Threads wichtig (genaueres bei
  bei Bedarf beim Thema Threads)
transient
- Solche Daten werden beim Speichern via ObjectOutputStream
  nicht gespeichert
- Stichwort: Serialisierung / Streams
<= Seite Inhaltsverzeichnis Seite =>