Sobes.tech
Middle

Nesne yönelimli programlamada hangi yöntem yeniden tanımlanamaz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bazı dillerde, örneğin Ruby'de, yeni nesneleri başlatmak için kullanılan initialize sınıf yöntemi, alt sınıfta doğrudan super.initialize olarak çağrılamaz. Bunun yerine, alt sınıf kendi initialize uygulamasında açıkça super yöntemini çağırmalı, bu da otomatik olarak ebeveyn sınıfın initialize yöntemini çağırır.

Diğer dillerde, örneğin Java veya C#'ta, "kullanıcı" yöntemleri, geleneksel anlamda üzerine yazılamayacak şekilde değildir, çünkü herhangi bir genel veya korumalı (!) yöntem, final (Java) veya sealed (C#) olarak işaretlenmemişse, üzerine yazılabilir. Ancak, yapıcıların, geleneksel anlamda üzerine yazılamayacak özel bir "yöntem" türü olduğu kabul edilebilir: Aynı isim ve imzaya sahip bir yöntemi, ebeveyn yapıcıyı değiştirecek şekilde alt sınıfta tanımlamak mümkün değildir. Alt sınıf kendi yapıcılarına sahip olabilir ve bunlar, super (Java) veya : base (C#) kullanarak ebeveyn sınıfın yapıcılarını çağırır.

class Parent {
    Parent() {
        System.out.println("Ebeveyn yapıcı");
    }
    void method() {
        System.out.println("Ebeveyn yöntemi");
    }
}

class Child extends Parent {
    Child() {
        // Ebeveyn yapıcıyı açıkça çağırmak gerekmez,
        // parametre yoksa otomatik olarak çağrılır.
        System.out.println("Çocuk yapıcı");
    }
    @Override // Yöntem üzerine yazma mümkündür
    void method() {
        System.out.println("Çocuk yöntemi");
    }
}

Genel olarak, yapıcıların, normal yöntemler gibi üzerine yazılamayacak yöntemler olduğu söylenebilir.