Sobes.tech
Junior

Када се метод сматра да је преформулисан?

sobes.tech АИ

Одговор од АИ

Metod se smatra prepisanim u sledećim slučajevima:

  1. Deklarisan je u podklasi.
  2. Ima isto ime kao metoda u roditeljskoj klasi.
  3. Ima istu potpis (broj i tipove parametara) i redosled parametara.
  4. Ima tip povratne vrednosti kompatibilan sa tipom povratne vrednosti metode u roditeljskoj klasi (kovarijantnost, ako je primenjivo).
  5. Ima isti ili širi modifikator pristupa od metode u roditeljskoj klasi (u većini objektno-orijentisanih jezika).
  6. Roditeljska metoda je deklarisana kao virtuelna, apstraktna ili interfejs (u jezicima koji zahtevaju eksplicitno označavanje mogućnosti prepisivanja, na primer C# sa ključnom rečju virtual).

Primer u Javi:

// Roditeljska klasa
class SuperClass {
    // Metod koji može biti prepisan
    public void display() {
        System.out.println("Ovo je display metod SuperClass.");
    }
}

// Potklasa
class SubClass extends SuperClass {
    // Prepisani display metod
    @Override // Anotacija za proveru prepisivanja tokom kompilacije
    public void display() {
        System.out.println("Ovo je display metod SubClass.");
    }
}

Primer u Pythonu:

# Roditeljska klasa
class SuperClass:
    # Metod koji može biti prepisan
    def display(self):
        print("Ovo je display metod SuperClass.")

# Potklasa
class SubClass(SuperClass):
    # Prepisani display metod
    def display(self):
        print("Ovo je display metod SubClass.")

Ključ je da se sačuva ime i potpis metode, ali da se promeni njegovo ponašanje u potklasi.

Važna razlika u odnosu na overloading:

Overloading je deklaracija više metoda istog imena u istoj klasi, ali sa različitim potpisima. Overriding je deklaracija metode u potklasi sa istim imenom i potpisom kao u roditeljskoj klasi.