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("Εμβαδόν: " + εμβαδόν);