Sobes.tech
Junior — Middle

Nesne yönelimli programlamada statik metodlar, alt sınıflarda yeniden tanımlanan metodlardan nasıl farklıdır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da statik metodlar, kendilerine ait sınıfa aittir, örneklere değil. Sınıf adıyla çağrılırlar ve alt sınıflarda yeniden tanımlanamazlar çünkü polimorfisime katılmazlar.

Buna karşılık, yeniden tanımlanabilen (statik olmayan) metodlar nesnelere aittir ve dinamik polimorfizmi destekler. Bir temel sınıfa referansla çağrıldığında, gerçek uygulama çalışma zamanında nesnenin tipi tarafından belirlenir.

Örnek:

class Parent {
    static void staticMethod() {
        System.out.println("Parent statik metodu");
    }
    void instanceMethod() {
        System.out.println("Parent örnek metodu");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Child statik metodu");
    }
    @Override
    void instanceMethod() {
        System.out.println("Child örnek metodu");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.staticMethod();      // Çıktı: Parent statik metodu
        p.instanceMethod();    // Çıktı: Child örnek metodu
    }
}

Burada, statik metod referans tipi (Parent) ile çağrılırken, örnek olmayan metod nesne tipi (Child) ile çağrılır.