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 [2019/02/22 08:25] gthanos [Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης] |
java:class_methods [2022/02/22 10:49] gthanos [Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης] |
||
|---|---|---|---|
| Line 25: | Line 25: | ||
| ===== Παραδείγματα μεθόδων ===== | ===== Παραδείγματα μεθόδων ===== | ||
| - | Δείτε το παρακάτω παράδειγμα | + | Με βάση παράδειγμα |
| <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); | ||
| + | } | ||
| + | | ||
| + | | ||
| + | | ||
| } | } | ||
| - | | + | |
| } | } | ||
| Line 64: | Line 82: | ||
| </ | </ | ||
| - | Ας υποθέσουμε ότι έχουμε την κλάση **SumNumbers** η οποία αποτελεί μέρος ενός υποθετικού προγράμματος άθροισης αριθμών. Διαθέτουμε την μέθοδο //sum// η οποία διαθέτει διαφορετικές | + | Στο |
| <code java> | <code java> | ||
| - | public class SumNumbers | + | void setOrigin(Point newOrigin) |
| + | origin = newOrigin; | ||
| + | } | ||
| + | |||
| + | void setOrigin(int newX, int newY) { | ||
| + | origin.setX(newX); | ||
| + | origin.setY(newY); | ||
| + | } | ||
| + | </ | ||
| - | public | + | Παρατηρήστε ότι έχουμε δύο μεθόδους με το ίδιο όνομα, οι οποίες διαφοροποιούνται ως προς τον αριθμό και το είδος των ορισμάτων τους. __Ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου, |
| - | double sum = 0; | + | |
| - | for(double num : nums) sum += num; | + | /* |
| - | return sum; | + | Ως επιπλέον παράδειγμα, |
| - | } | + | |
| - | | + | <code java SumNumbers.java> |
| - | return a+b; | + | class SumNumbers { |
| - | } | + | |
| - | | + | static |
| - | return a+b+c; | + | double sum = 0; |
| - | } | + | for(double num : nums) |
| - | // sum double a, count times | + | |
| - | | + | return sum; |
| - | double sum = 0; | + | } |
| - | for(int i=0; i<count; i++) | + | |
| - | sum += a; | + | static |
| - | return sum; | + | return a+b; |
| - | } | + | } |
| + | |||
| + | static | ||
| + | return a+b+c; | ||
| + | } | ||
| + | |||
| + | | ||
| + | | ||
| + | double sum = 0; | ||
| + | for(int i=0; i<count; i++) | ||
| + | sum += a; | ||
| + | return sum; | ||
| + | } | ||
| + | |||
| + | public static void main(String [] args) { | ||
| + | | ||
| + | double s2 = sum(4.5, 2.3, 1.1); | ||
| + | double s3 = sum(4.5, 2); | ||
| + | System.out.println(s1); | ||
| + | System.out.println(s2); | ||
| + | System.out.println(s3); | ||
| + | | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | <WRAP tip 80% center round> | ||
| + | Κατευάστε και εκτελέστε την παρακάτω συνάρτηση γράφοντας στο τερματικό σας: | ||
| + | < | ||
| + | javac SumbNumbers.java | ||
| + | java SumNumbers | ||
| + | </ | ||
| + | Προς το παρόν αγνοήστε τους προσδιοριστές static που μπαίνουν μπροστά από κάθε συνάρτηση. | ||
| + | </ | ||
| + | |||
| + | */ | ||
| |Προηγούμενο: | |Προηγούμενο: | ||