Sobes.tech
Junior

Мо дароии ва полиморфизм дар намудҳои маълумоти истинодӣ чӣ аст?

sobes.tech AI

Ҷавоб аз AI

Мутазира — ин механизам, ки имкон медиҳад, ки синфи нав (подсинф/чавон) хосиятҳо (майдонҳо) ва рафтор (методҳо) синфи мавҷударо (суперкласс/падар) мерос гирад, функсионалиро васеъ ё иваз кунад. Ин кӯмак мекунад, ки коди такроршаванда ва муносибатҳои "ҳаст" (is-a) барқарор шаванд.

Полиморфизм — имконияти объектҳои синфҳои гуногун ба номи як метод ҷавоб додан ба тариқи гуногун, вобаста ба навъи мушаххаси худ дар вақти иҷро. Ин барои чандирӣ ва васеъшавии коди кӯмак мерасонад, ки объектҳои подсинфҳоро тавассути истинод ба суперкласс коркард кунад.

Дар намудҳои маълумоти истинодӣ (класаҳо), ин консепсияҳо нақши калидӣ доранд:

  • Меросгирӣ: Подсинф ба аъзои суперкласс дастрасӣ дорад ва метавонад хосиятҳои худро илова ё рафторҳои унаследшудаи методҳоро иваз кунад (override). Объекти подсинф метавонад дар ҳар ҷо истифода шавад, ки дар он интизор меравад, ки объекти суперкласс бошад.
  • Полиморфизм: Объектҳои гуногун, ки ба як ҳиерархияи меросгӣ тааллуқ доранд, метавонанд бо як код коркард шаванд, ки як ва ҳамон методро даъват мекунанд, аммо иҷрои он барои навъи мушаххаси объект дар вақти иҷро фарқ мекунад.

Масал дар Java:

// Суперкласс (падар)
class Animal {
    public void makeSound() {
        System.out.println("Мекунад садо");
    }
}

// Подсинф (чавон), мерос аз Animal
class Dog extends Animal {
    // Иваз кардани метод аз суперкласс
    @Override
    public void makeSound() {
        System.out.println("Гав!");
    }
}

// Подсинф (чавон), мерос аз Animal
class Cat extends Animal {
    // Иваз кардани метод аз суперкласс
    @Override
    public void makeSound() {
        System.out.println("Мяу!");
    }
}

// Масал бо полиморфизм
public class PolymorphismExample {
    public static void main(String[] args) {
        Animal myAnimal = new Animal(); // объекти суперкласс
        Animal myDog = new Dog();       // объекти подсинф, истинод ба суперкласс
        Animal myCat = new Cat();       // объекти подсинф, истинод ба суперкласс

        myAnimal.makeSound(); // Натиҷа: Мекунад садо
        myDog.makeSound();    // Натиҷа: Гав! (полиморфизм - даъват мешавад методи Dog)
        myCat.makeSound();    // Натиҷа: Мяу! (полиморфизм - даъват мешавад методи Cat)
    }
}