Menu
Coddy logo textTech

Metody statyczne

Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 16 z 87.

Podobnie jak zmienne statyczne należą do klasy, a nie do jej instancji, metody statyczne również należą do samej klasy. Możesz je wywoływać bez tworzenia obiektu.

Zadeklaruj metodę statyczną, dodając słowo kluczowe static:

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;
    }
}

// Wywołaj bez tworzenia obiektu
int sum = MathHelper.add(5, 3);      // 8
int product = MathHelper.multiply(4, 2);  // 8

Metody statyczne mają jedno ważne ograniczenie: nie mogą bezpośrednio uzyskiwać dostępu do zmiennych instancji ani metod instancji. Ponieważ metody statyczne istnieją bez obiektu, nie ma odwołania this, z którego mogłyby korzystać.

public class Counter {
    private int count;              // Zmienna instancji
    private static int total;       // Zmienna statyczna
    
    public static void incrementTotal() {
        total++;      // OK - dostęp do zmiennej statycznej
        // count++;   // Błąd! Nie można uzyskać dostępu do zmiennej instancji
    }
}

Metody statyczne idealnie nadają się do operacji narzędziowych, które nie zależą od stanu obiektu — pomyśl o metodach takich jak Math.sqrt() czy Integer.parseInt(). Zapewniają funkcjonalność, która ma sens na poziomie klasy, a nie poszczególnych obiektów.

challenge icon

Wyzwanie

Łatwy

Zbudujmy klasę narzędziową StringUtils, która udostępnia przydatne metody do manipulowania ciągami znaków bez konieczności tworzenia obiektów — idealną do zademonstrowania metod statycznych!

Utworzysz dwa pliki, aby uporządkować swój kod:

  • StringUtils.java: Utwórz klasę narzędziową z metodami statycznymi wykonującymi typowe operacje na ciągach znaków:
    • Metodę statyczną countVowels(String text), która zwraca liczbę samogłosek (a, e, i, o, u — zarówno wielkich, jak i małych liter) w podanym ciągu znaków
    • Metodę statyczną reverse(String text), która zwraca odwrócony ciąg znaków
    • Metodę statyczną isPalindrome(String text), która zwraca true, jeśli ciąg znaków czytany od przodu i od tyłu jest taki sam (bez rozróżniania wielkości liter), a w przeciwnym razie false
  • Main.java: Użyj swojej klasy narzędziowej, aby przetworzyć ciąg znaków. Otrzymasz jedno wejście: ciąg tekstowy. Wywołaj każdą metodę statyczną bezpośrednio przez nazwę klasy i wypisz trzy wiersze:
    • Vowels: [count]
    • Reversed: [reversed string]
    • Palindrome: true lub Palindrome: false

Otrzymasz jedno wejście: ciąg tekstowy do analizy.

Pamiętaj, że metody statyczne wywołuje się za pomocą nazwy klasy (na przykład StringUtils.countVowels(text)), zamiast najpierw tworzyć jej instancję. Dzięki temu klasy narzędziowe są wygodne w przypadku operacji, które nie muszą zachowywać żadnego stanu między wywołaniami.

Spróbuj swoich sił

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        
        // TODO: Użyj metod statycznych StringUtils do analizy tekstu
        // Wywołaj StringUtils.countVowels(text), aby uzyskać liczbę samogłosek
        // Wywołaj StringUtils.reverse(text), aby uzyskać odwrócony tekst
        // Wywołaj StringUtils.isPalindrome(text), aby sprawdzić, czy tekst jest palindromem
        
        // TODO: Wypisz wyniki w formacie:
        // Samogłoski: [liczba]
        // Odwrócony tekst: [odwrócony tekst]
        // Palindrome: true/false
        
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Java online