Menu
Coddy logo textTech

Statische Methoden

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 16 von 87.

Genauso wie statische Variablen zur Klasse gehören und nicht zu Instanzen, gehören auch statische Methoden zur Klasse selbst. Sie können sie aufrufen, ohne ein Objekt zu erstellen.

Deklarieren Sie eine statische Methode, indem Sie das Schlüsselwort static hinzufügen:

public class MathHelper {
    public static int add(int a, int b) {
        return a + b;
    }
    
    public static int multiply(int a, int b) {
        return a * b;
    }
}

// Aufruf ohne Erstellung eines Objekts
int sum = MathHelper.add(5, 3);      // 8
int product = MathHelper.multiply(4, 2);  // 8

Statische Methoden haben eine wichtige Einschränkung: sie können nicht direkt auf Instanzvariablen oder Instanzmethoden zugreifen. Da statische Methoden ohne ein Objekt existieren, gibt es keine this-Referenz, mit der man arbeiten könnte.

public class Counter {
    private int count;              // Instanzvariable
    private static int total;       // Statische Variable
    
    public static void incrementTotal() {
        total++;      // OK - Zugriff auf statische Variable
        // count++;   // Fehler! Zugriff auf Instanzvariable nicht möglich
    }
}

Statische Methoden sind ideal für Hilfsoperationen, die nicht vom Objektzustand abhängen – denken Sie an Methoden wie Math.sqrt() oder Integer.parseInt(). Sie bieten Funktionen, die eher auf Klassenebene als für einzelne Objekte sinnvoll sind.

challenge icon

Aufgabe

Einfach

Lassen Sie uns eine StringUtils-Hilfsklasse erstellen, die hilfreiche Methoden zur String-Manipulation bereitstellt, ohne dass Objekte erstellt werden müssen – perfekt, um statische Methoden zu demonstrieren!

Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:

  • StringUtils.java: Erstellen Sie eine Hilfsklasse mit statischen Methoden, die gängige String-Operationen ausführen:
    • Eine statische Methode countVowels(String text), die die Anzahl der Vokale (a, e, i, o, u – sowohl Groß- als auch Kleinschreibung) in der angegebenen Zeichenfolge zurückgibt
    • Eine statische Methode reverse(String text), die die Zeichenfolge umgekehrt zurückgibt
    • Eine statische Methode isPalindrome(String text), die true zurückgibt, wenn die Zeichenfolge vorwärts und rückwärts gleich gelesen wird (unabhängig von der Groß-/Kleinschreibung), andernfalls false
  • Main.java: Verwenden Sie Ihre Hilfsklasse, um eine Zeichenfolge zu verarbeiten. Sie erhalten eine Eingabe: eine Textzeichenfolge. Rufen Sie jede statische Methode direkt über den Klassennamen auf und geben Sie drei Zeilen aus:
    • Vowels: [count]
    • Reversed: [reversed string]
    • Palindrome: true oder Palindrome: false

Sie erhalten eine Eingabe: eine zu analysierende Textzeichenfolge.

Denken Sie daran, dass statische Methoden über den Klassennamen aufgerufen werden (wie StringUtils.countVowels(text)), anstatt zuerst eine Instanz zu erstellen. Dies macht Hilfsklassen praktisch für Operationen, die keinen Zustand zwischen den Aufrufen beibehalten müssen.

Spickzettel

Statische Methoden gehören zur Klasse selbst und können aufgerufen werden, ohne ein Objekt zu erstellen. Deklarieren Sie diese mit dem Schlüsselwort static:

public class MathHelper {
    public static int add(int a, int b) {
        return a + b;
    }
}

// Aufruf ohne Erstellung eines Objekts
int sum = MathHelper.add(5, 3);  // 8

Wichtige Einschränkung: Statische Methoden können nicht direkt auf Instanzvariablen oder Instanzmethoden zugreifen, da sie ohne ein Objekt existieren und keine this-Referenz haben:

public class Counter {
    private int count;              // Instanzvariable
    private static int total;       // Statische Variable
    
    public static void incrementTotal() {
        total++;      // OK - Zugriff auf statische Variable
        // count++;   // Fehler! Zugriff auf Instanzvariable nicht möglich
    }
}

Statische Methoden sind ideal für Hilfsoperationen, die nicht vom Objektzustand abhängen, wie Math.sqrt() oder Integer.parseInt().

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        
        // TODO: Verwenden Sie statische Methoden von StringUtils, um den Text zu analysieren
        // Rufen Sie StringUtils.countVowels(text) auf, um die Anzahl der Vokale zu erhalten
        // Rufen Sie StringUtils.reverse(text) auf, um die umgekehrte Zeichenfolge zu erhalten
        // Rufen Sie StringUtils.isPalindrome(text) auf, um zu prüfen, ob es ein Palindrom ist
        
        // TODO: Geben Sie die Ergebnisse in folgendem Format aus:
        // Vowels: [Anzahl]
        // Reversed: [umgekehrte Zeichenfolge]
        // Palindrome: true/false
        
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung