Sobes.tech
Junior

Ποιο είναι το νόημα του πολυμορφισμού στον προγραμματισμό;

sobes.tech AI

Απάντηση από AI

Ο πολυμορφισμός επιτρέπει τη χρήση αντικειμένων διαφορετικών κλάσεων που έχουν κοινή διεπαφή, μέσω ενός κοινού "τύπου" (π.χ., μια βασική κλάση ή διεπαφή).

Ο κύριος σκοπός του:

  • Ενοποίηση της εργασίας με αντικείμενα: Επιτρέπει τη συγγραφή κώδικα που δεν εξαρτάται από τον συγκεκριμένο τύπο αντικειμένου, αλλά λειτουργεί με αυτό μέσω αφαιρετικότητας.
  • Ευελιξία: Είναι εύκολο να προστεθούν νέες κλάσεις που υλοποιούν την ίδια διεπαφή, χωρίς να αλλάξει ο υπάρχων κώδικας που χρησιμοποιεί αυτήν την αφαιρετικότητα.
  • Αναγνωσιμότητα και διαχειρισιμότητα: Ο κώδικας γίνεται πιο δομημένος και κατανοητός, καθώς κρύβει την πολυπλοκότητα της συγκεκριμένης υλοποίησης πίσω από μια ενιαία διεπαφή.

Το αρχή είναι ότι η ίδια μέθοδος, που καλείται σε διαφορετικά αντικείμενα, συμπεριφέρεται διαφορετικά, ανάλογα με τον συγκεκριμένο τύπο τους.

Παράδειγμα σε PHP:

<?php

interface Animal {
    public function makeSound();
}

class Dog implements Animal {
    public function makeSound() {
        return "Woof!";
    }
}

class Cat implements Animal {
    public function makeSound() {
        return "Meow!";
    }
}

function hearAnimalSound(Animal $animal) {
    echo $animal->makeSound() . "\n";
}

$dog = new Dog();
$cat = new Cat();

hearAnimalSound($dog); // Θα εμφανίσει "Woof!"
hearAnimalSound($cat); // Θα εμφανίσει "Meow!"

?>

Σε αυτό το παράδειγμα, η συνάρτηση hearAnimalSound δέχεται οποιοδήποτε αντικείμενο που υλοποιεί το interface Animal. Η κλήση της μεθόδου makeSound() μέσα σε αυτήν τη συνάρτηση συμπεριφέρεται διαφορετικά για τα αντικείμενα Dog και Cat, δείχνοντας τον πολυμορφισμό.