This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
|
java:class_methods [2018/02/08 13:33] gthanos [Κανόνες ονοματολογίας] |
java:class_methods [2020/02/08 06:23] gthanos [Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης] |
||
|---|---|---|---|
| Line 22: | Line 22: | ||
| - setLatitude | - setLatitude | ||
| - isEmpty | - isEmpty | ||
| - | H λίστα των παραμέτρων μέσα σε παρένθεση, | ||
| - | - Μία σειρά από Exceptions (θα συζητηθούν αργότερα). | ||
| - | - Το κυρίως σώμα της μεθόδου, | ||
| ===== Παραδείγματα μεθόδων ===== | ===== Παραδείγματα μεθόδων ===== | ||
| - | **Οι μέθοδοι της κλάσης έχουν | + | Με βάση |
| <code java> | <code java> | ||
| - | public | + | class Rectangle { |
| - | | + | |
| - | | + | // the Rectangle class has 3 fields |
| - | + | int width; | |
| - | public Rectangle(int initWidth, int initHeight) { | + | int height; |
| + | Point origin; | ||
| + | |||
| + | // the Rectangle class has one constructor | ||
| + | public Rectangle(int initWidth, int initHeight, Point initOrigin) { | ||
| width = initWidth; | width = initWidth; | ||
| height = initHeight; | height = initHeight; | ||
| + | origin = initOrigin; | ||
| } | } | ||
| - | + | ||
| - | | + | void setWidth(int newWidth ) { |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | void setHeight(int newHeight ) { |
| - | | + | |
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | | ||
| + | void setOrigin(int newX, int newY) { | ||
| + | origin.setX(newX); | ||
| + | origin.setY(newY); | ||
| + | } | ||
| + | | ||
| + | | ||
| + | | ||
| } | } | ||
| - | | + | |
| } | } | ||
| </ | </ | ||
| + | |||
| + | <WRAP important 80% center round> | ||
| + | Βασικό χαρακτηριστικό του Αντικειμενοστραφούς Προγραμματισμού είναι ότι οι μέθοδοι της κλάσης έχουν απευθείας πρόσβαση στα πεδία της κλάσης. Στο παραπάνω παράδειγμα, | ||
| + | </ | ||
| ===== Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης ===== | ===== Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης ===== | ||
| - | Βασικό χαρακτηριστικό του Αντικειμενοστραφούς Προγραμματισμού είναι η υπερφόρτωση των μεθόδων | + | Επιπλέον, |
| - ως προς τον τύπο τους | - ως προς τον τύπο τους | ||
| - ως προς τον αριθμό τους και | - ως προς τον αριθμό τους και | ||
| Line 63: | Line 82: | ||
| </ | </ | ||
| - | Ας υποθέσουμε ότι έχουμε την κλάση **DrawChars** η οποία αποτελεί μέρος ενός υποθετικού προγράμματος εκτύπωσης | + | Στο |
| <code java> | <code java> | ||
| - | public class DrawChars | + | void setOrigin(Point newOrigin) |
| - | | + | |
| - | | + | } |
| - | ... | + | |
| - | } | + | |
| - | | + | |
| - | ... | + | origin.setY(newY); |
| - | | + | } |
| - | public void draw(double f) { | + | </ |
| - | ... | + | |
| - | | + | Παρατηρήστε ότι έχουμε δύο μεθόδους με το ίδιο όνομα, οι οποίες διαφοροποιούνται ως προς τον αριθμό και το είδος των ορισμάτων τους. __Ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου, |
| - | | + | |
| - | ... | + | Ως επιπλέον παράδειγμα, |
| - | } | + | |
| + | <code java SumNumbers.java> | ||
| + | class SumNumbers { | ||
| + | |||
| + | static double sum(double []nums) { | ||
| + | | ||
| + | for(double num : nums) | ||
| + | sum += num; | ||
| + | return sum; | ||
| + | | ||
| + | |||
| + | static double sum(double a, double b) { | ||
| + | | ||
| + | } | ||
| + | |||
| + | static double sum(double a, double b, double c) { | ||
| + | return a+b+c; | ||
| + | } | ||
| + | |||
| + | // sum double a, count times | ||
| + | static double sum(double a, int count) { | ||
| + | | ||
| + | | ||
| + | sum += a; | ||
| + | | ||
| + | } | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | System.out.println(s2); | ||
| + | | ||
| + | | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | <WRAP tip 80% center round> | ||
| + | Κατευάστε και εκτελέστε την παρακάτω συνάρτηση γράφοντας στο τερματικό σας: | ||
| + | < | ||
| + | javac SumbNumbers.java | ||
| + | java SumNumbers | ||
| + | </ | ||
| + | Προς το παρόν αγνοήστε τους προσδιοριστές static που μπαίνουν μπροστά από κάθε συνάρτηση. | ||
| + | </ | ||
| |Προηγούμενο: | |Προηγούμενο: | ||