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

21.3. Nøgleordet abstract

Noget der er erklæret abstract er ikke implementeret og skal defineres i en nedarvning.

Det skrives i kursiv i UML-notationen.

21.3.1. Klasser

En abstrakt klasse erklæres således

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

Det er ikke tilladt at oprette objekter fra en abstrakt klasse

public static void main(String args[])
  {
    X x = new X(); //// ulovligt! X er abstrakt//

I stedet skal man arve fra klassen

public class Y extends X 
{
}

og lave objekter fra den nedarvede klasse:

public static void main(String args[])
  {
    X x; //// lovligt// x = new Y(); //// lovligt, Y er ikke abstrakt//

Basisklasserne for IO-systemet, InputStream og OutputStream, abstrakte, fordi programmøren altid skal bruge en mere konkret klasse, f.eks. FileInputStream (seAfsnit 15.5.4).

Det er lovligt (og nyttigt i visse tilfælde) at have variabler af en abstrakt klasse (det svarer til, at det er lovligt og nyttigt at have variabler af en interface-type).

21.3.2. Metoder

En metode erklæret abstract har et metodehoved, men ingen krop. Den kan kun erklæres i en abstrakt klasse

public abstract class X 
{
  public //abstract// void a();
}

Nedarvede klasser skal definere de abstrakte metoder (eller også selv være abstrakte)

public class Y extends X 
{
  public void a()
  { ////..// }
}

forrige hjem næste
Nøgleordet final op Indre klasser