Abstrakte und finale Klassen und Methoden
Mit den Schlüsselwörtern abstract und final lässt sich die Verwendung von
Klassen und Methoden einschränken oder vorschreiben:
- Abstrakte Klassen können nicht instanziiert werden
- Abstrakte Methoden werden in abstrakten Klassen deklariert, besitzen keinen Methodenrumpf und müssen in allen abgeleiteten Klassen überschrieben werden
- Finale Klassen können nicht von anderen Klassen abgeleitet werden
- Finale Methoden können von Unterklassen nicht überschrieben werden
- Abstrakte Klasse mit abstrakter und finaler Methode
- Finale Klasse
- Startklasse
Computer.java (Auszug)
public abstract class Computer {
...
public abstract ArrayList<String> getSpecification();
public final Cpu getCpu() {
return cpu;
}
...
}
Notebook.java (Auszug)
public final class Notebook extends Computer {
...
@Override
public ArrayList<String> getSpecification() {
ArrayList<String> specification = new ArrayList<>();
specification.add("description: " + description);
specification.add("cpu: " + cpu);
specification.add("memoryInGb: " + memoryInGb);
specification.add("screenSizeInInches: " + screenSizeInInches);
return specification;
}
@Override
public Cpu getCpu() {...} // Kompilierungsfehler: finale Methode kann nicht überschrieben werden
...
}
MainClass.java
public class MainClass extends Notebook { // Kompilierungsfehler: finale Klasse kann nicht erweitert werden
public static void main(String[] args) {
Computer computer = new Computer("Mein Office PC"); // Kompilierungsfehler: abstrakte Klasse kann nicht instanziiert werden
}
}