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.