User Tools

Site Tools


linuxbog.old:java:java-avancerede-klasser-final
Linux - Friheden til at programmere i Java: Version 0.7.20040516 - 2020-12-31
forrige Kapitel 21. Avancerede klasser næste

21.2. Nøgleordet final

Noget, der er erklæret final , kan ikke ændres. Både variabler, metoder og klasser kan erklæres final.

21.2.1. Variabler

En variabel, der er erklæret final , kan ikke ændres, når den først har fået en værdi.

public class X 
{
  public //final// int a=10; ////..//  //// forbudt: a=11;// }

Herover kan a's værdi ikke ændres i den efterfølgende kode.

Det kan lette overskueligheden at vide, hvilke variabler, der er konstante. Desuden udføres programmet lidt hurtigere.

final foran en objektvariabel angiver ikke synlighed, men kan bruges sammen med public, protected og private.

final kan også bruges på lokale variabler (hvor public, protected og private aldrig kan bruges):

public static void main(String args[])
  { //final// Vector v = new Vector(); ////v = new Vector();  // ulovligt! v kan ikke ændres.//

Bemærk: Når vi arbejder med objekter, er variablerne jo referencer til objekterne. En variabel erklæret final kan ikke ændres til at referere til et andet objekt, men objektet kan godt få ændret sin indre tilstand, f.eks. gennem et metodekald:

v.addElement("Hans"); //// lovligt, v refererer stadig til samme objekt//

21.2.2. Metoder

En metode erklæret final kan ikke tilsidesættes i en nedarving.

public class X 
{
  public //final// void a()
  { //// ..// }
}

og

public class Y extends X 
{
  public void a() //// ulovligt! a() er final// { ////..// }
}

Den virtuelle maskine kan optimere final metoder, så kald til dem sker en smule hurtigere.

21.2.3. Klasser

En klasse erklæret final må man overhovedet ikke arve fra (og alle dens metoder bliver final).

public //final// class X 
{ //// ..// }

og

public class Y extends X //// ulovligt! X er final// {
}

forrige hjem næste
Avancerede klasser op Nøgleordet abstract
linuxbog.old/java/java-avancerede-klasser-final.txt · Last modified: by 127.0.0.1

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

Brug af AI : Al tekst kán være uddrag af AI genereret tekst og kan være fejlbehæftet.
AI kan lave fejl og det kan mennesker også, men al tekst er gennemgået af et menneske for fejl, og personlig bias kan være tilføjet.