| Linux - Friheden til at programmere i Java: Version 0.7.20040516 - 2020-12-31 | ||
|---|---|---|
| forrige | Kapitel 21. Avancerede klasser | næste | 
Noget der er erklæret abstract er ikke implementeret og skal defineres i en nedarvning.
Det skrives i kursiv i UML-notationen.
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 (se Afsnit 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).
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()
  {
    //..
  }
}