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-ის მეთოდი)
    }
}