Από τώρα είστε εξοικειωμένοι με την δημιουργία στιγμιότυπωνεσωτερικές τάξεις στην Java, μπορούμε να μιλήσουμε για Πολύμορφο και υπερφορτισμό μεθόδων. Ο πολυμορφισμός είναι η δυνατότητα ενός αντικειμένου Java να ανταποκρίνεται ομοιόμορφα για να επιτύχει συγκεκριμένη συμπεριφορά στις κλήσεις μεθόδων με το ίδιο όνομα αλλά με διαφορετικές υλοποιήσεις. Στην Java, η έννοια του Πολυμορφισμού μπορεί να επιτευχθεί με διάφορους τρόπους. Εδώ είναι το Java Tutorial με το Code for Overloading Method.
Java Tutorial με τον κώδικα για την υπερφόρτωση μεθόδου.
Τι είναι η υπερφόρτωση μεθόδου
Στη Java, είναι δυνατόν να ορίσετε δύο ή περισσότεραμεθόδους που ανήκουν στην ίδια κλάση και μοιράζονται το ίδιο όνομα. Ωστόσο, οι δηλώσεις παραμέτρων τους θα πρέπει να είναι διαφορετικές. Αυτοί οι τύποι μεθόδων λέγεται ότι είναι υπερφορτωμένοι και η διαδικασία αναφέρεται ως μέθοδος υπερφορτώσεως.
Η υπερφόρτωση μεθόδου υποστηρίζει τον πολυμορφισμό επειδή είναι ένας τρόπος με τον οποίο η Java υλοποιεί το παράδειγμα μιας διεπαφής, πολλαπλών μεθόδων.
Ιδιότητες
- Σε μια τάξη, η έννοια της υπερφόρτωσης μεθόδου δεν επιτρέπει στον εξωτερικό χρήστη να γνωρίζει την εσωτερική επεξεργασία του συστήματος.
- Οι υπερφορτωμένες μέθοδοι διαφέρουν είτε στον αριθμό των παραμέτρων είτε στον τύπο παραμέτρων ή ακολουθία παραμέτρων.
- Οι υπερφορτωμένες μέθοδοι αναλύονται στις ακόλουθες ακολουθίες:
- Αριθμός παραμέτρων.
- Τύπος παραμέτρων.
- Μια ακολουθία παραμέτρων.
Με βάση αυτές τις μεθόδους χρησιμοποιούνται αντίστοιχα για να επιστρέψουν την επιθυμητή έξοδο.
- Η μέθοδος Overloading επιτρέπει στο χρήστη να επιτύχει το καταρτίζει πολυμορφισμό χρόνου.
- Οι υπερφορτωμένες μέθοδοι ενδέχεται να έχουν τους ίδιους ή διαφορετικούς τύπους επιστροφής.
Πρόγραμμα Java για υπερφορτώσεις μεθόδων
class Figure{ /* Calculate Area of Square */ void area(double length){ System.out.println("Area of Square is: "+Math.pow(length,2)); } /* Calculate Area of Rectangle */ void area(double length,double breadth){ System.out.println("Area of Rectangle is: "+(length*breadth)); } /* Calculate Area of Cylinder */ void area(double radius,int height){ System.out.println("Area of Cylinder is: "+(2*3.14*Math.pow(radius,2)*height)); } /* Calculate Area of Cube */ void area(int arms){ System.out.println("Area of Cube is: "+(6*arms*arms)); } } class CalculateArea{ public static void main(String args[]){ Figure fig = new Figure(); fig.area(5.25); fig.area(4.5,5.5); fig.area(2); fig.area(3.2,6); } }
Η έξοδος της μεθόδου Overloading.
Επεξήγηση του Java Code & Output
Εδώ, εντός της κλάσης, η περιοχή του Σχήματος () είναι υπερφορτωμένημέθοδος, που έχει το ίδιο όνομα με διαφορετικές εφαρμογές, δηλαδή παράδειγμα "ένα περιβάλλον διεπαφής, πολλαπλών μεθόδων". Μπορείτε εύκολα να διαπιστώσετε ότι η ίδια μέθοδος χρησιμοποιείται για την εκτέλεση διαφορετικών λειτουργιών, δηλ. Για τον υπολογισμό περιοχών διαφορετικών γεωμετρικών περιοχών με βάση τον αριθμό / τύπο / ακολουθία παραμέτρων που πέρασαν και παράγεται η επιθυμητή έξοδος.
Η επίκληση μεθόδου μπορεί να είναι οποιασδήποτε σειράς. Ως περιοχή μεθόδου () για τον υπολογισμό της περιοχής του κύβου που επικαλείται πριν από την κλήση της περιοχής μεθόδου () για τον υπολογισμό της περιοχής του κυλίνδρου.
Στο πρόγραμμα, κάλεσα επίσης μια στατική μέθοδο pow () της τάξης Math η οποία είναι μέλος του πακέτου java.lang για να υπολογίσει το τετράγωνο οποιουδήποτε αριθμού.
Το φλας ενεργοποιήθηκε
Κατά την επίλυση των υπερφορτωμένων μεθόδων, η Java απασχολείτις αυτόματες μετατροπές τύπου μόνο αν δεν υπάρχει ακριβής αντιστοίχιση. Όπως βλέπετε παρακάτω, η κλάση Overload δεν ορίζει την εμφάνιση (int) αλλά έχει ήδη ορίσει την εμφάνιση (διπλή).
Επομένως, όταν η εμφάνιση () καλείται με έναinteger argument μέσα στο OverloadDemo, δεν βρέθηκε καμία μέθοδος αντιστοίχισης. Ωστόσο, η Java μπορεί να μετατρέψει αυτόματα έναν ακέραιο σε διπλό και αυτή η μετατροπή μπορεί να χρησιμοποιηθεί για την επίλυση της κλήσης. Επομένως, αφού η εμφάνιση (int) δεν βρεθεί, η Java ανυψώνει το "i" για να διπλασιαστεί και στη συνέχεια να εμφανίσει κλήσεις (διπλό). Φυσικά, αν είχε οριστεί "display (int)", θα είχε ονομαστεί αντ 'αυτού.
class Overload { // display method with no parameters void display() { System.out.println("No parameters"); } // Overload display for two integer parameters. void display(int a, int b) { System.out.println("a and b: " + a + " " + b); } // overload display for a double parameter void display(double a) { System.out.println("a: " + a); } } class OverloadDemo { public static void main(String args[]) { Overload overload = new Overload(); int i = 88; ob.display(); ob.display (10, 20); ob.display (i); // this will invoke display(double) ob.display (123.2); // this will invoke display(double) } }
Ν.Β: Αυτή η μετατροπή ισχύει για κατώτερο τύπο δεδομένων (π.χ. int) σε υψηλότερη μετάδοση δεδομένων (π.χ. διπλή) όχι για αντίστροφη (διπλή προς int).
Στο επόμενο σεμινάριο μας, θα μάθουμε για την υπερφόρτωση του Constructor σε Java.
Σχόλια