Junior
Welke soorten klassen zijn er in Java?
sobes.tech AI
Antwoord van AI
- Reguliere (concrete / gewone) klassen: Kunnen worden geïnstantieerd, bevatten velden, methoden, constructeurs.
- Abstracte klassen: Kunnen niet direct worden geïnstantieerd. Kunnen abstracte methoden (zonder implementatie) en normale methoden bevatten. Worden gebruikt om gemeenschappelijke kenmerken voor subklassen te definiëren.
abstract class AbstractClass { abstract void abstractMethod(); // Abstracte methode void regularMethod() { System.out.println("Reguliere methode"); } } - Geneste klassen (nested classes): Worden binnen een andere klasse gedeclareerd. Ze kunnen:
- Statische geneste klassen (static nested classes): Hebben geen toegang tot niet-statische leden van de externe klasse. Worden zonder instantie van de externe klasse gemaakt.
class OuterClass { static class StaticNestedClass { // ... } } - Binnenklassen (inner classes): Hebben toegang tot alle leden van de externe klasse (inclusief privé). Ze zijn gekoppeld aan een instantie van de externe klasse.
class OuterClass { class InnerClass { // Heeft toegang tot leden van OuterClass } } - Lokale klassen (local classes): Worden binnen een methode, lus of if-blok gedeclareerd. Toegang tot hen is beperkt tot hun declaratiegebied.
class OuterClass { void someMethod() { class LocalClass { // Lokaal gedeclareerd } LocalClass obj = new LocalClass(); } } - Anonieme klassen (anonymous classes): Zonder naam, worden tegelijk met de declaratie of instantie gemaakt. Worden gebruikt voor eenmalig gebruik.
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Anonieme klasse"); } };
- Statische geneste klassen (static nested classes): Hebben geen toegang tot niet-statische leden van de externe klasse. Worden zonder instantie van de externe klasse gemaakt.
- Records (sinds Java 14): Compacte syntax voor het declareren van onveranderlijke klassen bedoeld voor gegevensopslag (POJO).
record Person(String name, int age) { // Automatisch gegenereerde constructor, getters, equals(), hashCode(), toString() }