Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ αφαίρεσης και πολυμορφισμού;

sobes.tech AI

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

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

Χαρακτηριστικό Αφηρημένη έννοια Πολυμορφισμός
Ουσία Απόκρυψη λεπτομερειών, παροχή γενικής εικόνας Η δυνατότητα επεξεργασίας αντικειμένων διαφορετικών τύπων με ενιαίο τρόπο
Στόχος Απλοποίηση, μείωση πολυπλοκότητας Ευελιξία, επεκτασιμότητα, καθολικότητα κώδικα
Πώς επιτυγχάνεται Αφηρημένες κλάσεις, διεπαφές Υπερφόρτωση μεθόδων, υπερκάλυψη μεθόδων, διεπαφές
Παραδείγματα Κλάση Αυτοκίνητο χωρίς λεπτομέρειες κινητήρα Μέθοδος κινήσου() σε διαφορετικές κλάσεις (ΙΧ, Φορτηγό)

Παράδειγμα αφαιρετικότητας (χρήση αφαιρετικότητας):

interface Σχήμα {
    // Αφηρημένη μέθοδος
    double υπολογισμόςΕμβαδού(); 
}

class Κύκλος implements Σχήμα {
    private double ακτίνα;

    public Κύκλος(double ακτίνα) {
        this.ακτίνα = ακτίνα;
    }

    @Override
    public double υπολογισμόςΕμβαδού() {
        // Λεπτομέρειες υλοποίησης κρύβονται πίσω από τη μέθοδο της διεπαφής
        return Math.PI * ακτίνα * ακτίνα; 
}
}

Παράδειγμα πολυμορφισμού:

// Χρήση πολυμορφισμού
Σχήμα τοΣχήμα μου = new Κύκλος(5); 
// Κλήση της μεθόδου υπολογισμόςΕμβαδού() μέσω της αναφοράς του βασικού τύπου (διεπαφή Σχήμα)
// Στην πραγματικότητα, θα εκτελεστεί η μέθοδος υπολογισμόςΕμβαδού() από την κλάση Κύκλος
double εμβαδόν = τοΣχήμα μου.υπολογισμόςΕμβαδού(); 

System.out.println("Εμβαδόν: " + εμβαδόν);