Junior
Τι μπορεί να αλλάξει κατά την υπερφόρτωση μεθόδων στον προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Κατά την υπερφόρτωση μεθόδων (method overloading), μπορείτε να αλλάξετε:
- Αριθμό παραμέτρων: Οι μέθοδοι με το ίδιο όνομα μπορούν να έχουν διαφορετικό αριθμό τυπικών παραμέτρων.
- Τύπους παραμέτρων: Οι μέθοδοι με το ίδιο όνομα και τον ίδιο αριθμό παραμέτρων μπορούν να διαφέρουν στους τύπους αυτών.
- Σειρά των τύπων παραμέτρων: Αν οι μέθοδοι έχουν τον ίδιο αριθμό παραμέτρων και τους ίδιους τύπους, αλλά διαφέρουν στη σειρά, αυτό επίσης θεωρείται υπερφόρτωση.
Παράδειγμα σε Java:
// Κλάση με υπερφορτωμένες μεθόδους
class Calculator {
// Μέθοδος πρόσθεσης δύο ακέραιων
public int add(int a, int b) {
return a + b;
}
// Υπερφορτωμένη μέθοδος: πρόσθεση τριών ακέραιων
public int add(int a, int b, int c) {
return a + b + c;
}
// Υπερφορτωμένη μέθοδος: πρόσθεση δύο δεκαδικών
public double add(double a, double b) {
return a + b;
}
// Υπερφορτωμένη μέθοδος: πρόσθεση ακέραιου και δεκαδικού
public double add(int a, double b) {
return a + b;
}
// Υπερφορτωμένη μέθοδος: πρόσθεση δεκαδικού και ακέραιου
public double add(double a, int b) {
return a + b;
}
}
Τι δεν μπορεί να αλλάξει κατά την υπερφόρτωση:
- Τύπος επιστροφής: Δύο μέθοδοι με το ίδιο όνομα και την ίδια υπογραφή (αριθμό, τύπους και σειρά παραμέτρων) δεν μπορούν να διαφέρουν μόνο στον τύπο επιστροφής.
- Τροποποιητές πρόσβασης: Οι τροποποιητές πρόσβασης (public, private, protected, default) δεν επηρεάζουν την υπερφόρτωση.
- Παρουσία ή απουσία του
static: Δεν μπορεί να υπερφορτωθεί μια στατική μέθοδος με μια μη στατική ή το αντίστροφο. - Λίστα εξαιρέσεων: Η λίστα εξαιρέσεων δεν αποτελεί μέρος της υπογραφής της μεθόδου και δεν λαμβάνεται υπόψη στην υπερφόρτωση.
Σύγκριση υπερφόρτωσης και υπερκαλύψεως μεθόδων:
| Χαρακτηριστικό | Υπερφόρτωση (Overloading) | Υπερκαλύψη (Overriding) |
|---|---|---|
| Πού συμβαίνει | Σε μια κλάση ή σε μια ιεραρχία κλάσεων | Στην υποκλάση |
| Όνομα μεθόδου | Το ίδιο | Το ίδιο |
| Υπογραφή μεθόδου | Διαφορετική (αριθμός, τύποι, σειρά παραμέτρων) | Ίδια |
| Τύπος επιστροφής | Μπορεί να διαφέρει (αλλά όχι ως μοναδική διαφορά) | Πρέπει να είναι ίδιος ή συμβατικός (για αντικείμενα) |
| Σκοπός | Παροχή διαφορετικών επιλογών για διαφορετικούς τύπους δεδομένων ή αριθμό ορισμάτων | Αλλαγή συμπεριφοράς κληρονομημένης μεθόδου στην υποκλάση |
| Σχέση μεταξύ μεθόδων | Ανεξάρτητες μέθοδοι | Σχέση "είναι" (κληρονομία) |
| Πολυμορφισμός | Πολυμορφισμός κατά τη φάση μεταγλώττισης (στατικός) | Πολυμορφισμός κατά την εκτέλεση (δυναμικός) |