Menu
Coddy logo textTech

Statik Metotlar

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 16 / 87.

Tıpkı statik değişkenlerin örneklere değil de sınıfa ait olması gibi, statik metotlar da sınıfın kendisine aittir. Onları bir nesne oluşturmadan çağırabilirsiniz.

static anahtar kelimesini ekleyerek statik bir metot tanımlayın:

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

// Bir nesne oluşturmadan çağırın
int sum = MathHelper.add(5, 3);      // 8
int product = MathHelper.multiply(4, 2);  // 8

Statik metotların önemli bir kısıtlaması vardır: doğrudan örnek değişkenlerine veya örnek metotlarına erişemezler. Statik metotlar bir nesne olmadan var olduklarından, üzerinde çalışılacak bir this referansı yoktur.

public class Counter {
    private int count;              // Örnek değişkeni
    private static int total;       // Statik değişken
    
    public static void incrementTotal() {
        total++;      // Tamam - statik değişkene erişiliyor
        // count++;   // Hata! Örnek değişkenine erişilemez
    }
}

Statik metotlar, nesne durumuna bağlı olmayan yardımcı işlemler için idealdir; Math.sqrt() veya Integer.parseInt() gibi metotları düşünün. Bireysel nesnelerden ziyade sınıf düzeyinde anlamlı olan işlevsellik sağlarlar.

challenge icon

Görev

Kolay

Herhangi bir nesne oluşturmaya gerek kalmadan yardımcı dize işleme yöntemleri sağlayan bir StringUtils yardımcı sınıfı oluşturalım - statik yöntemleri göstermek için mükemmel!

Kodunuzu düzenlemek için iki dosya oluşturacaksınız:

  • StringUtils.java: Yaygın dize işlemlerini gerçekleştiren statik yöntemlere sahip bir yardımcı sınıf oluşturun:
    • Verilen dizedeki sesli harflerin (a, e, i, o, u - hem büyük hem de küçük harf) sayısını döndüren statik bir countVowels(String text) yöntemi
    • Dizeyi tersine çevrilmiş olarak döndüren statik bir reverse(String text) yöntemi
    • Dize ileri ve geri aynı şekilde okunuyorsa (büyük/küçük harf duyarsız) true, aksi takdirde false döndüren statik bir isPalindrome(String text) yöntemi
  • Main.java: Bir dizeyi işlemek için yardımcı sınıfınızı kullanın. Bir girdi alacaksınız: bir metin dizesi. Her statik yöntemi doğrudan sınıf adı üzerinden çağırın ve üç satır yazdırın:
    • Vowels: [count]
    • Reversed: [reversed string]
    • Palindrome: true veya Palindrome: false

Analiz etmek için bir girdi alacaksınız: bir metin dizesi.

Statik yöntemlerin, önce bir örnek oluşturmak yerine sınıf adı kullanılarak (StringUtils.countVowels(text) gibi) çağrıldığını unutmayın. Bu, yardımcı sınıfları çağrılar arasında herhangi bir durum koruması gerekmeyen işlemler için kullanışlı hale getirir.

Kopya kağıdı

Statik metotlar sınıfın kendisine aittir ve bir nesne oluşturulmadan çağrılabilirler. Bunları static anahtar kelimesini kullanarak tanımlayın:

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

// Bir nesne oluşturmadan çağırın
int sum = MathHelper.add(5, 3);  // 8

Önemli kısıtlama: Statik metotlar, bir nesne olmadan var oldukları ve this referansına sahip olmadıkları için örnek (instance) değişkenlerine veya örnek metotlarına doğrudan erişemezler:

public class Counter {
    private int count;              // Örnek değişkeni
    private static int total;       // Statik değişken
    
    public static void incrementTotal() {
        total++;      // Tamam - statik değişkene erişiliyor
        // count++;   // Hata! Örnek değişkenine erişilemez
    }
}

Statik metotlar, Math.sqrt() veya Integer.parseInt() gibi nesne durumuna bağlı olmayan yardımcı işlemler için idealdir.

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        
        // TODO: Metni analiz etmek için StringUtils statik metotlarını kullanın
        // Sesli harf sayısını almak için StringUtils.countVowels(text) metodunu çağırın
        // Ters çevrilmiş dizeyi almak için StringUtils.reverse(text) metodunu çağırın
        // Palindrom olup olmadığını kontrol etmek için StringUtils.isPalindrome(text) metodunu çağırın
        
        // TODO: Sonuçları şu formatta yazdırın:
        // Vowels: [count]
        // Reversed: [reversed string]
        // Palindrome: true/false
        
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler