Sobes.tech
Junior

Кай вақт усули усул ҳисобида мешавад?

sobes.tech AI

Ҷавоб аз AI

Раванди дар ҳолатҳои зерин ҳисобида мешавад:

  1. Дар синфи фарзӣ эълон шудааст.
  2. Номи он ҳамон номест, ки дар методи синфи падар.
  3. Сигнатураи он (шумор ва намудҳои параметрҳо) ва тартиби параметрҳо ҳамон аст.
  4. Навъи баргардонидашаванда мувофиқ бо навъи баргардонидашавандаи метод дар синфи падар (ковариантӣ, агар татбиқ шавад).
  5. Модификатори дастрасӣ ҳамон ё васеътар аз он аст, ки дар методи синфи падар (дар бештари забонҳои объектӣ-ба равишҳои объектӣ).
  6. Метод дар синфи падар ҳамчун виртуалӣ, абстрактӣ ё интерфейсӣ эълон шудааст (дар забонҳое, ки талаб мекунанд, ки имконияти ивазшавиро ба таври равшан нишон диҳанд, масалан, C# бо калимаи калидии virtual).

Масалан дар Java:

// Синфи падар
class SuperClass {
    // Метод, ки метавонад иваз шавад
    public void display() {
        System.out.println("Ин методи display-и SuperClass.");
    }
}

// Синфи фарзӣ
class SubClass extends SuperClass {
    // Метод ивазшудаи display
    @Override // Анотация барои санҷиши ивазшавӣ дар марҳилаи компилятсия
    public void display() {
        System.out.println("Ин методи display-и SubClass.");
    }
}

Масалан дар Python:

# Синфи падар
class SuperClass:
    # Метод, ки метавонад иваз шавад
    def display(self):
        print("Ин методи display-и SuperClass.")

# Синфи фарзӣ
class SubClass(SuperClass):
    # Метод ивазшудаи display
    def display(self):
        print("Ин методи display-и SubClass.")

Ключ дар он аст, ки номи ва сигнатураи методро нигоҳ доред, аммо рафторро дар синфи фарзӣ тағир диҳед.

Фарқияти муҳим бо overloading:

Overloading маънои эълон кардани чанд метод бо номи якхела дар як синф, аммо бо сигнатураҳои гуногунро дорад. Overriding маънои эълон кардани метод дар синфи фарзӣ бо номи ва сигнатураи ҳамон бо он дар синфи падар мебошад.