Sobes.tech
Junior

Вақте ки усул ҳамчун ивазшаванда (overriding) ҳисоб мешавад?

sobes.tech AI

Ҷавоб аз AI

Метод дар объектӣ-ҳарҷагирии барномасозӣ ҳисоб мешавад, ки:

  1. Дар синфи зерини (подкласс) бо номи, навъи баргардонанда ва рӯйхати параметрҳо (имзо) ҳамон тавр, ки дар синфи болоӣ (суперкласс) муайян шудааст.
  2. Методи синфи болоӣ private нест.
  3. Методи синфи зерин дар дастрасӣ нисбат ба методу синфи болоӣ қатъӣтар нест.
  4. Дар ҳолати истисноҳо, методуи дарозшуда наметавонад истисноҳои санҷидашударо ([checked exceptions]) эълон кунад, ки умумӣтар аз истисноҳое мебошанд, ки дар методуи дарозшуда эълон шудаанд.

Ҳангоми фаро гирифтани методуи дарозшуда дар объект аз синфи зер, версияи методуи синфи зер иҷро мешавад. Ин намунаи полиморфизм дар вақти иҷро мебошад.

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

// java

class Animal {
    public void makeSound() {
        System.out.println("Садоии умумии ҳайвон");
    }
}

class Dog extends Animal {
    @Override // Анотацияи @Override тасдиқ мекунад, ки метод дароз шудааст
    public void makeSound() {
        System.out.println("Гав гав");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Мяу");
    }
}