User Tools

Site Tools


java:class_methods

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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:
 ===== Παραδείγματα μεθόδων ===== ===== Παραδείγματα μεθόδων =====
  
-Δείτε το παρακάτω παράδειγμα από την κλάση **Rectangle** που αναπαριστά το ορθογώνιο παραλληλόγραμμο.+Με βάση παράδειγμα της προηγούμενης ενότητας για την κλάση **Rectangle** που αναπαριστά ένα ορθογώνιο παραλληλόγραμμο.
  
 <code java> <code java>
-public class Rectangle { +class Rectangle { 
-  public int width; +     
-  public int height; +  // 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;
   }   }
-  + 
-  public void setWidth(int newWidth ) { width = newWidth; }  +  void setWidth(int newWidth ) { 
-  public void setHeight(int newHeight ) { height = newHeight; }  +    width = newWidth; 
-  public int getWidth() { return width;  } +  } 
-  public int getHeight() { return height;  }  +     
-  public void resize(int dw, int dh) {                                                      +  void setHeight(int newHeight ) { 
-    width +dwheight += dh;  +    height = newHeight; 
 +  } 
 +     
 +  Point getOrigin() { 
 +    return origin; 
 +  } 
 +   
 +  void setOrigin(int newX, int newY) { 
 +    origin.setX(newX); 
 +    origin.setY(newY); 
 +  }  
 +   
 +  void setOrigin(Point newOrigin) { 
 +    origin newOrigin;
   }   }
-  public int getArea() { return width * height; }+  
 } }
  
Line 64: Line 82:
 </WRAP> </WRAP>
  
-Ας υποθέσουμε ότι έχουμε την κλάση **SumNumbers** η οποία αποτελεί μέρος ενός υποθετικού προγράμματος άθροισης αριθμών. Διαθέτουμε την μέθοδο //sum// η οποία διαθέτει διαφορετικές εκδόσεις αθροισμάτων. Το ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου αποφασίζεται από τον compiler με βάση το είδος και τον αριθμό των ορισμάτων.+Στο προηγούμενο παράδειγμαέχουμε τις εξής δύο εκδόσεις της μεθόδου **setOrigin**:
  
 <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); 
 +  } 
 +</code>
  
-    public double sum(double []nums) { +Παρατηρήστε ότι έχουμε δύο μεθόδους με το ίδιο όνομα, οι οποίες διαφοροποιούνται ως προς τον αριθμό και το είδος των ορισμάτων τους. __Ποια έκδοση χρησιμοποιείται σε κάθε κλήση της μεθόδου, αποφασίζεται από τον compiler με βάση το είδος και τον αριθμό των ορισμάτων__. 
-        double sum = 0; + 
-        for(double num : nums) sum += num; +/* 
-        return sum; +Ως επιπλέον παράδειγμα, ας υποθέσουμε ότι έχουμε την κλάση **SumNumbers** η οποία αποτελεί μέρος ενός υποθετικού προγράμματος άθροισης αριθμών. Διαθέτουμε τις μέθόδους //sum// οι οποίες προσδιορίζουν διαφορετικές εκδόσεις αθροισμάτων μεταξύ ακεραίων ή αριθμών κινητής υποδιαστολής.  
-    + 
-    public double sum(double a, double b) { +<code java SumNumbers.java> 
-        return a+b; +class SumNumbers { 
-    + 
-    public double sum(double a, double b, double c) { +  static double sum(double []nums) { 
-        return a+b+c; +    double sum = 0; 
-    +    for(double num : nums)  
-    // sum double a, count times +      sum += num; 
-    public double sum(double a, int count) { +    return sum; 
-        double sum = 0; +  
-        for(int i=0; i<count; i++) +   
-            sum += a; +  static double sum(double a, double b) { 
-        return sum; +    return a+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) { 
 +    double sum = 0; 
 +    for(int i=0; i<count; i++) 
 +      sum += a; 
 +    return sum; 
 +  } 
 +   
 +  public static void main(String [] args) { 
 +    double s1 = sum(4.5, 2.3); 
 +    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); 
 +  }
 } }
 </code> </code>
 +
 +<WRAP tip 80% center round>
 +Κατευάστε και εκτελέστε την παρακάτω συνάρτηση γράφοντας στο τερματικό σας:
 +<code>
 +javac SumbNumbers.java
 +java SumNumbers
 +</code>
 +Προς το παρόν αγνοήστε τους προσδιοριστές static που μπαίνουν μπροστά από κάθε συνάρτηση.
 +</WRAP>
 +
 +*/
  
 |Προηγούμενο: [[:java:class_fields| Τα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:class_constructors | Κατασκευαστές της κλάσης ]]| |Προηγούμενο: [[:java:class_fields| Τα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:class_constructors | Κατασκευαστές της κλάσης ]]|
  
java/class_methods.txt · Last modified: 2022/02/23 10:00 by gthanos