Abstrakte und finale Klassen und Methoden
Mit Hilfe der Schlüsselwörter abstract
und final
kann die Verwendung von
Klassen vorgegeben bzw. eingeschänkt werden:
- Abstrakte Klassen können nicht instanziiert werden
- Abstrakte Methoden werden in abstrakten Klassen definiert, besitzen dort keinen Methodenrumpf und müssen in den abgeleiteten Klassen der abstrakten Klasse überschrieben werden
- Finale Klassen können nicht abgeleitet werden
- Finale Methoden können 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
...
}
MainClass.java
public class MainClass extends Notebook { // Kompilierungsfehler
public static void main(String[] args) {
Computer myComputer = new Computer("Mein Office PC"); // Kompilierungsfehler
}
}