Sobes.tech
Junior

Metod nə vaxt yenidən yazılmış sayılır?

sobes.tech Süni İntellekt

AI-dan cavab

Metod aşağıdakı hallarda yenidən təyin edilmiş sayılır:

  1. O, törəmə sinifdə elan olunub.
  2. O, valideyn sinifdəki metodla eyni adı daşıyır.
  3. O, eyni imzaya (parametrlərin sayı və tipləri) və parametrlərin ardıcıllığına malikdir.
  4. O, valideyn sinifdəki metodun geri dönüş növü ilə uyğun gələn geri dönüş növünə malikdir (ko-varianlıq, əgər tətbiq olunursa).
  5. O, valideyn sinifdəki metodla eyni və ya daha geniş giriş modifikatoruna malikdir (əksər obyekt yönümlü dillərdə).
  6. Valideyn metodu virtual, abstrakt və ya interfeys kimi elan olunub (açıq şəkildə yenidən təyin etmə imkanını tələb edən dillərdə, məsələn, C#-də virtual açar sözü ilə).

Java nümunəsi:

// Valideyn sinfi
class SuperClass {
    // Yenidən təyin oluna bilən metod
    public void display() {
        System.out.println("Bu, SuperClass-ın display metodudur.");
    }
}

// Törəmə sinif
class SubClass extends SuperClass {
    // Yenidən təyin olunmuş display metodu
    @Override // Kompilyasiya mərhələsində yenidən təyin etməni yoxlamaq üçün annotasiya
    public void display() {
        System.out.println("Bu, SubClass-ın display metodudur.");
    }
}

Python nümunəsi:

# Valideyn sinfi
class SuperClass:
    # Yenidən təyin oluna bilən metod
    def display(self):
        print("Bu, SuperClass-ın display metodudur.")

# Törəmə sinif
class SubClass(SuperClass):
    # Yenidən təyin olunmuş display metodu
    def display(self):
        print("Bu, SubClass-ın display metodudur.")

Əsas məqam, metodun adını və imzasını qorumaq, lakin onun davranışını törəmə sinifdə dəyişdirməkdir.

Overloading (yükləmə) ilə vacib fərq:

Yükləmə, eyni sinifdə eyni adda, lakin fərqli imzaya malik bir neçə metodun elanıdır. Overriding (yenidən təyin etmə) isə, törəmə sinifdə, atasının metodu ilə eyni adda və imzaya malik metodun elanıdır.