Sobes.tech
Middle

Μίλησέ μου για τους κανόνες υπερφόρτωσης μεθόδων.

sobes.tech AI

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

Ο υπερφορτωμός μεθόδων (Method Overloading) στην αντικειμενοστραφή προγραμματισμό επιτρέπει τον ορισμό πολλαπλών μεθόδων σε μια κλάση με το ίδιο όνομα, αλλά με διαφορετικές υπογραφές.

Οι βασικοί κανόνες για τον υπερφορτωμό μεθόδων:

  1. Διαφορά στις υπογραφές: Η υπογραφή μιας μεθόδου περιλαμβάνει το όνομα της μεθόδου και τη λίστα των τύπων των παραμέτρων της στη σωστή σειρά. Για να θεωρούνται οι μέθοδοι υπερφορτωμένες, οι υπογραφές τους πρέπει να διαφέρουν.

    // Παραδείγματα διαφορετικών υπογραφών
    void print(int i) { }
    void print(String s) { }
    void print(int i, String s) { }
    void print(String s, int i) { } // Διαφορετική σειρά παραμέτρων
    
  2. Το όνομα της μεθόδου πρέπει να είναι το ίδιο: Οι υπερφορτωμένες μέθοδοι πρέπει να έχουν το ίδιο όνομα.

    // Σωστό παράδειγμα υπερφόρτωσης
    class Example {
        void process(int a) { }
        void process(double b) { }
    }
    
  3. Ο τύπος επιστροφής δεν αποτελεί μέρος της υπογραφής: Η αλλαγή μόνο του τύπου επιστροφής δεν καθιστά τις μεθόδους υπερφορτωμένες. Ο μεταγλωττιστής δεν μπορεί να διακρίνει ποια μέθοδο πρέπει να καλεστεί αν οι υπογραφές των παραμέτρων είναι ίδιες.

    // Δεν είναι υπερφόρτωση - σφάλμα μεταγλώττισης
    int calculate() { return 1; }
    String calculate() { return "error"; }
    
  4. Οι τροποποιητές πρόσβασης και οι ειδικοί προσδιοριστές εξαιρέσεων δεν επηρεάζουν τον υπερφορτωμό: Ομοίως με τον τύπο επιστροφής, η αλλαγή μόνο των τροποποιητών πρόσβασης (public, private, protected, default) ή της λίστας των ρίψεων (throws) δεν οδηγεί σε υπερφόρτωση.

    // Δεν είναι υπερφόρτωση - σφάλμα μεταγλώττισης αν οι υπογραφές των παραμέτρων είναι ίδιες
    public void doSomething() { }
    private void doSomething() { }
    
  5. Η σειρά των παραμέτρων έχει σημασία: Η αλλαγή της σειράς των τύπων των παραμέτρων καθιστά τις υπογραφές διαφορετικές.

    // Είναι υπερφόρτωση
    void setup(int width, int height) { }
    void setup(int height, String unit) { } // Διαφορετικός δεύτερος παράμετρος
    void setup(String unit, int size) { } // Διαφορετικός τύπος και σειρά παραμέτρων
    
  6. Ο αριθμός των παραμέτρων έχει σημασία: Διάφοροι αριθμοί παραμέτρων οδηγούν σε διαφορετικές υπογραφές.

    // Είναι υπερφόρτωση
    void log(String message) { }
    void log(String message, int level) { }
    

Επομένως, ο βασικός παράγοντας για τον υπερφορτωμό μεθόδων είναι η μοναδικότητα της υπογραφής της μεθόδου, η οποία καθορίζεται από το όνομά της και το σύνολο (τύπους και σειρά) των παραμέτρων της.