Sobes.tech
Junior

Hansı zaman metod override edilir (overriding)?

sobes.tech Süni İntellekt

AI-dan cavab

Bir metod, törəmə sinifdə eyni imzaya (metodun adı, parametr sayı və tipləri eyni ardıcıllıqla) malik metodun elan olunması ilə yenidən yazılmış sayılır. Bundan əlavə:

  1. Ata sinifdəki metod final (və ya digər dillərdə ekvivalent modifikator) kimi elan edilməməlidir, bu metodun yenidən yazılmasını qadağan edir.
  2. Törəmə sinifdə yenidən yazılan metodun giriş səviyyəsi ata sinifdəki metoddan daha məhdud olmamalıdır.
  3. Yenidən yazılan metod, ata sinifdəki metodla eyni növü və ya kovariant növü (orijinal növün alt tipi) qaytara bilər.
  4. Yenidən yazılan metod, ata sinifdə elan olunanlardan daha ümumi (və ya uyğun olmayan) istisnalar atmayacaq.
  5. Statik metodlar yenidən yazıla bilməz, yalnız gizlənə bilər (hidden).

Yenidən yazılmış metoda ata sinifə aid referans və törəmə sinif obyekti ilə çağırıldıqda, törəmə sinifin versiyası işləyir (polimorfizm).

// Java nümunəsi

class Parent {
    public void display() { // Ata sinifdə metod
        System.out.println("Parent display");
    }

    // final void cannotOverride() { ... } // Bu metod yenidən yazıla bilməz
}

class Child extends Parent {
    @Override // @Override annotasiyası, kompilatorun metodun həqiqətən yenidən yazıldığını yoxlamasına kömək edir
    public void display() { // Yenidən yazılmış metod - eyni imza
        System.out.println("Child display");
    }
}