Sobes.tech
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");
          }
      };
      
  • 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()
    }