Sobes.tech
Junior

Кай вақт дар барномасозӣ тағйир додани усул (overriding) рух медиҳад?

sobes.tech AI

Ҷавоб аз AI

Методнинг қайта таърифланиши мураслашда юз беради, бу ерда қуйи синф ўзининг аниқлаштирган методини тақдим этади, бу метод аллақачон ота синфда белгиланган. Методнинг имзоси (номи, қайтариш тури ва аргументлар сони/турлари) ота синфдаги метод билан мос келиши керак. Бу полиморфизмнинг ишлашини таъминлайди: қуйи синф объекти, уни ота синф сифатида ишлатганда, ўзининг махсус метод реализациясини чақиради.

Ишлатиш мисоллари:

  • Мурасланган хулқ-атвор логикасини ўзгартириш.
  • Умумий интерфейс учун қуйи синфга хос реализацияни тақдим этиш.

Асосий нуқталар:

  • -га-- муносабати талаб қилинади (мураслаш).
  • Методнинг имзоси мос келиши керак.
  • Кириш модификатори, ота синф методига тенг ёки ундан камроқ қатъий бўлиши мумкин.
  • final ёки static методлар қайта таърифланмайди (кўп тилларда).
// Javaда мисол
class Animal {
    public void makeSound() {
        System.out.println("Жонзотнинг умумий овози");
    }
}

class Dog extends Animal {
    @Override // Анотация, қайта таърифланишни кўрсатади
    public void makeSound() {
        System.out.println("Гав!");
    }
}

// Ишлатиш
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Чиқиш: Жонзотнинг умумий овози
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Чиқиш: Гав! (қайта таърифланган метод чақирилади)
# Pythonда мисол
class Animal:
    def make_sound(self):
        print("Жонзотнинг умумий овози")

class Dog(Animal):
    def make_sound(self): # Методни қайта таърифлаш
        print("Гав!")

# Ишлатиш
# animal = Animal()
# animal.make_sound() # Чиқиш: Жонзотнинг умумий овози
#
# dog = Dog()
# dog.make_sound() # Чиқиш: Гав!