Sobes.tech
Junior

Ի՞նչ է ժառանգությունը և պոլիմորֆիզմը հղումային տվյալների տիպերում։

sobes.tech AI

Պատասխան AI-ից

Ներառումը — դա մեխանիզմ է, որը թույլ է տալիս նոր դասին (մերո/մերորդ դասը) ժառանգել առկա դասի (վերևի դաս/հայրական դաս) հատկությունները (գոտիները) և վարքագիծը (մեթոդները), ընդլայնելով կամ վերագրելով ֆունկցիոնալությունը: Սա նպաստում է կոդի կրկնվող օգտագործմանը և «էական է» (is-a) հարաբերությունների հաստատմանը:

Պոլիմորֆիզմը — դա հնարավորությունն է տարբեր դասերի օբյեկտների տարբեր կերպ պատասխանել նույն մեթոդի անվան վրա, կախված իրենց կոնկրետ տիպից ժամանակի ընթացքում։ Դա ապահովում է կոդի ճկունություն և ընդլայնելիություն, թույլ տալով մշակել ենթաօբյեկտների օբյեկտները վերնագրի միջոցով:

Այս կոնցեպցիաները կարևոր դեր են խաղում հղումային տվյալների տիպերում (класаներում):

  • Ներառում: Հետո դասը հասանելի է վերևի դասի անդամներին և կարող է ավելացնել իր սեփական կամ փոխել ժառանգած մեթոդների վարքագիծը (վերագրում — overriding): Օբյեկտը ենթաօբյեկտից կարող է օգտագործվել ամենուր, որտեղ սպասվում է վերևի դասի օբյեկտ:
  • Պոլիմորֆիզմ: Տարբեր օբյեկտներ, որոնք պատկանում են նույն ժառանգական հիերարխիային, կարող են մշակվել նույն կոդով, որը կանչում է նույն մեթոդը, բայց իրականացմանը մասնակցում է կոնկրետ օբյեկտի տիպը ժամանակի ընթացքում:

Օրինակ 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 մեթոդը)
    }
}