Skip to content

Kapitel 12: Häufige Schlüsselwörter

🎯 Lernziele

  • static Schlüsselwort (Klassenvariable/-methode)
  • final Schlüsselwort (Konstante, unveränderliche Klasse)
  • Code-Blöcke (Static/Instance Initializer)
  • Innere Klassen (Inner Classes) Einstieg

12.1 static Schlüsselwort

🔧 Was ist static?

static = Gehört zur Klasse, nicht zum Objekt.

Mit staticOhne static
Klassenvariable/-methodeInstanzvariable/-methode
Über Klasse aufrufbar (Klasse.methode())Über Objekt aufrufbar (obj.methode())
Nur eine Kopie für alle ObjekteJedes Objekt hat eigene Kopie

📋 Beispiel: static Variable & Methode

java
class BeispielKlasse {
    static int zaehler = 0;  // Klassenvariable (gemeinsam!)
    int id;  // Instanzvariable (einzeln)
    
    BeispielKlasse() {
        zaehler++;  // Erhöht gemeinsamen Zähler
        this.id = zaehler;
    }
    
    static void zeigeZaehler() {  // Klassenmethode
        System.out.println("Zähler: " + zaehler);
    }
}

public class StaticBeispiel {
    public static void main(String[] args) {
        BeispielKlasse.zeigeZaehler();  // Über Klasse aufrufen!
        
        BeispielKlasse b1 = new BeispielKlasse();
        BeispielKlasse b2 = new BeispielKlasse();
        
        System.out.println(b1.id);  // 1
        System.out.println(b2.id);  // 2
        BeispielKlasse.zeigeZaehler();  // 2
    }
}

12.2 final Schlüsselwort

🔒 Was ist final?

final = Unveränderlich.

VerwendungBedeutung
final VariableKonstante (Wert kann nicht geändert werden)
final MethodeKann nicht überschrieben werden
final KlasseKann nicht vererbt werden

📋 Beispiel: final Variable & Klasse

java
final class UnveränderlicheKlasse {  // Kann nicht vererbt werden!
    final double PI = 3.14159;  // Konstante (Großbuchstaben!)
    
    final void methode() {  // Kann nicht überschrieben werden!
        System.out.println("Final Methode");
    }
}

// ❌ Fehler: Kann UnveränderlicheKlasse nicht erweitern!
// class Kind extends UnveränderlicheKlasse {}

12.3 Code-Blöcke

🏗️ Arten von Code-Blöcken

Code-BlockAusführungszeitpunktZweck
Static InitializerBeim Laden der Klasse (einmalig)Klassenvariablen initialisieren
Instance InitializerBei jedem Objekt-Erstellen (vor Konstruktor)Instanzvariablen initialisieren

📋 Beispiel: Static & Instance Initializer

java
class Beispiel {
    static int staticVar;
    int instanceVar;
    
    // Static Initializer (einmalig!)
    static {
        staticVar = 100;
        System.out.println("Static Initializer ausgeführt!");
    }
    
    // Instance Initializer (bei jedem Objekt!)
    {
        instanceVar = 50;
        System.out.println("Instance Initializer ausgeführt!");
    }
    
    Beispiel() {
        System.out.println("Konstruktor ausgeführt!");
    }
}

public class CodeBlockBeispiel {
    public static void main(String[] args) {
        System.out.println("Erstes Objekt:");
        Beispiel b1 = new Beispiel();
        
        System.out.println("\nZweites Objekt:");
        Beispiel b2 = new Beispiel();
    }
}

Ausgabe:

Static Initializer ausgeführt!  (Nur einmal!)
Erstes Objekt:
Instance Initializer ausgeführt!
Konstruktor ausgeführt!

Zweites Objekt:
Instance Initializer ausgeführt!
Konstruktor ausgeführt!

12.4 Innere Klassen (Inner Classes) Einstieg

🏠 Was sind innere Klassen?

Innere Klasse = Eine Klasse, die innerhalb einer anderen Klasse definiert wird.

Vorteile:

  • ✅ Zugriff auf private Mitglieder der äußeren Klasse
  • ✅ Logische Gruppierung von Klassen

📋 Beispiel: Innere Klasse

java
class AeußereKlasse {
    private String geheim = "Ich bin privat!";
    
    class InnereKlasse {  // Innere Klasse
        void zugreifen() {
            System.out.println("Zugriff auf: " + geheim);  // Darf auf private zugreifen!
        }
    }
    
    void methode() {
        InnereKlasse inner = new InnereKlasse();
        inner.zugreifen();
    }
}

public class InnerClassBeispiel {
    public static void main(String[] args) {
        AeußereKlasse aeuss = new AeußereKlasse();
        aeuss.methode();  // Zugriff auf: Ich bin privat!
    }
}

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • static = Klassenmitglied (nicht objektspezifisch)
  • final = Unveränderlich (Konstante, nicht vererbbar)
  • ✅ Code-Blöcke (Static/Instance Initializer)
  • ✅ Innere Klassen (Zugriff auf äußere private Mitglieder)

💡 Merksatz für Anfänger

"static gehört zur Klasse, final macht unveränderlich!"

🎯 Nächste Schritte

Im nächsten Kapitel lernst du:

  • String Klasse (Kapitel 13)
  • String-Grundlagen
  • Häufige String-Methoden
  • StringBuffer & StringBuilder

📚 Weiterführende Links:

💬 Fragen?
Hinterlassen Sie einen Kommentar!

Frei für alle Anfänger