next up previous contents index
Next: Abstrakte Methoden und abstrakte Up: Vererbung Previous: Überladen von Methoden

Die final-Kennzeichnung

  

Als final können in Java-Programmen markiert werden:

Bedeutung in allen Fällen: Dieses Element kann nicht verändert werden.

Finale Daten

 

Final kennzeichnet konstante Daten, also sowohl

Übersetzungszeitkonstanten
   final int MAX = 12;

also auch

Laufzeitkonstanten
   final int RAND = (int)random*12;

final-Werte müssen bei ihrer Deklaration initialisiert werden:

    // konstanter float-Wert:
    static final float PI = 3.14;
    // konstante Referenz:
    final Uhr u = new Uhr(14,50);

Ausnahme: Die in Java1.1   neuen Blanko-Konstanten (blank finals):    

Konstanten, die für jede Instanz einer Klasse einen anderen Wert haben können. Jeder Konstruktor muß diesen Wert zuweisen:

   class blankfinaltest
   { final int C;
     int val;
     blankfinaltest()
     { C = 7;
     }
     blankfinaltest(int v) // FALSCH
     { val = v;
     }
   }

Der Compiler:

Blank final variable 'C' may not have been
initialized. It must be assigned a value in
an initializer, or in every constructor.

Finale Methoden

 

Finale Methoden können von abgeleiteten Klassen nicht überschrieben werden:

   class finalm
   { final void m()
     { System.out.println("fini");
     }
   }

   class finalsub extends finalm  
   { void m()  // FALSCH
     { System.out.println("over");
     }
   }

Der Compiler:

Final methods can't be overriden. Method void
m() is final in class finalm.

Gründe für finale Methoden:

Finale Klassen

 

Durch final-Kennzeichnung einer gesamten Klasse verbietet man die Erweiterung dieser Klasse:

   final class finalc
   { void m()
     { System.out.println("fini");
     }
   }

   class finalsub extends finalc // FALSCH
   { void m()
     { System.out.println("over");
     }
   }

Der Compiler:

Can't subclass final classes: class finalc

Die Gründe für finale Klassen sind ebenfalls Sicherheit und/oder Effizienz.


next up previous contents index
Next: Abstrakte Methoden und abstrakte Up: Vererbung Previous: Überladen von Methoden

Peter Pfahler, 1997