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 Both sides next revision
java:class_methods [2017/02/16 09:52]
gthanos [Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης]
java:class_methods [2017/02/16 10:20]
gthanos
Line 1: Line 1:
 ====== Μέθοδοι της Κλάσης ====== ====== Μέθοδοι της Κλάσης ======
  
-Προηγουμένως συναντήσαμε ορισμούς μεθόδων. Γενικά,​ κατά τον ορισμό μίας μεθόδου έχουμε τα εξής: 
  
-  - Προσδιοριστές τύπου, όπως **public****private**, **protected** (θα τον συναντήσουμε ​στην συνέχεια)+Ο ορισμός ​οποιασδήποτε μεθόδου ​στη Java περιέχει τα εξής πεδία 
-  - Τον τύπο της επιστρεφόμενης τιμής ή void εάν η μέθοδος δεν επιστρέφει κάτι. + 
-  - Το όνομα της μεθόδου. Ισχύει και εδώ ο "​κανόνας"​ ότι τα ονόματα ξεκινούν με μικρό γράμμα και εάν πρόκειται για ονόματα με περισσότερες από μία λέξεις αυτές χωρίζονται με κεφαλαία γράμματα. Η πρώτη λέξη κάθε μεθόδου ​θα πρέπει να είναι ρήμα. Μερικά παραδείγματα μπορείτε να δείτε παρακάτω:​+<color red><​πρ. πρόσβασης></​color>​ <color green><​επιστ. ​τύπος></​color>​ <color magenta><​όνομα></​color>​ (<color orange><​λίστα ​περαμέτρων></​color>​) <color gray>​Exceptions</​color> ​**{**.....**}** 
 + 
 +  - <color red>Προσδιοριστές πρόσβασης</​color>,​ όπως //public// ή //private//
 +  - <color green>Τον τύπο της επιστρεφόμενης τιμής</​color> ​ή void εάν η μέθοδος δεν επιστρέφει κάτι. 
 +  - <color magenta>Το όνομα της μεθόδου</​color>​ 
 +  - <color orange>H λίστα των παραμέτρων</​color>​ μέσα σε παρένθεση,​ χωρισμένες με κόμμα. Κάθε παράμετρος εκτός από το όνομά της οφείλει να διαθέτει και τον τύπο της, π.χ. int speed ή double latitude. Εάν δεν υπάρχουν παράμετροι το περιεχόμενο των παρενθέσεων είναι κενό. 
 +  - Μία σειρά από <color gray>​Exceptions</​color>​ (θα συζητηθούν αργότερα). 
 +  - Το κυρίως σώμα της μεθόδου,​ το οποίο περιέχεται μέσα σε αγκύλες **{}**. 
 + 
 +===== Κανόνες ονοματολογίας ===== 
 + 
 +Ισχύει και εδώ ο "​κανόνας"​ ότι τα ονόματα ξεκινούν με μικρό γράμμα και εάν πρόκειται για ονόματα με περισσότερες από μία λέξεις αυτές χωρίζονται με κεφαλαία γράμματα. Η πρώτη λέξη κάθε μεθόδου ​συνιστάται να είναι ρήμα. Μερικά παραδείγματα μπορείτε να δείτε παρακάτω:​
     - run     - run
     - runFast     - runFast
Line 17: Line 27:
   - Το κυρίως σώμα της μεθόδου,​ το οποίο περιέχεται μέσα σε αγκύλες.   - Το κυρίως σώμα της μεθόδου,​ το οποίο περιέχεται μέσα σε αγκύλες.
  
-Παρακάτω ​δίνονται τυπικά παραδείγματα ​μεθόδων:+===== Παραδείγματα μεθόδων ===== 
 + 
 +**Οι μέθοδοι της κλάσης έχουν απευθείας πρόσβαση στα πεδία της ​κλάσης**. Δείτε το παρακάτω παράδειγμα ​από ​την κλάση **Rectangle** που ​αναπαριστά το ορθογώνιο παραλληλόγραμμο.
  
 <code java> <code java>
-  ​public ​void setWidth(int newWidth ​) { +public ​class Rectangle { 
-    width = newWidth;+  public int width; 
 +  public int height; 
 + 
 +  public Rectangle(int initWidth, int initHeight) { 
 +    width = initWidth;​ 
 +    height = initHeight;
   }   }
-  ​ +  
-  public ​int getWidth() { +  public ​void setWidth(int newWidth ​) { width = newWidth; }  
-    return ​width; +  public void setHeight(int newHeight ) { height = newHeight; }  
-  ​} +  public int getWidth() { return ​width;  } 
-    ​ +  public int getHeight() { return ​height;  }  
-  public void setHeight(int newHeight ) { +  public void resize(int dw, int dh) {                                                     ​ 
-    ​height = newHeight; +    ​width +dw; height += dh;  ​
-  ​} +
-  ​ +
-  public int getHeight() { +
-    ​return ​height; +
-  } +
-    ​ +
-  public ​void setColor(int[] newColor) { +
-    color = newColor; +
-  } +
-   +
-  public int[] getColor() { +
-    ​return ​color; +
-  } +
-  ​ +
-  public void setPoint(Point newOrigin) { +
-    ​origin ​newOrigin; +
-  +
-   +
-  public Point getPoint() { +
-    return origin;+
   }   }
 +  public int getArea() { return width * height; }
 +}
 +
 </​code>​ </​code>​
  
Line 91: Line 91:
         ...         ...
     }     }
-    public void drawDoble(double f) {+    public void drawDouble(double f) {
         ...         ...
     }     }
Line 99: Line 99:
 } }
 </​code>​ </​code>​
- 
-<WRAP info 80% center round> 
-Ανάλογη με την υπερφόρτωση μεθόδων είναι και η υπερφόρτωση κατασκευαστών. Όπως μπορούμε να έχουμε πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα,​ έτσι μπορούμε να έχουμε και πολλούς κατασκευαστές με διαφορετικά ορίσματα. Δείτε το παράδειγμα που ακολουθεί για την κλάση Rectangle της προηγούμενης ενότητας. 
-</​WRAP>​ 
- 
-<code java Rectangle.java>​ 
-public class Rectangle { 
-    ​ 
-  private int width; 
-  private int height; 
-  private Point origin; 
-    ​ 
-  public Rectangle(int initWidth, int initHeight, Point initOrigin) { 
-    width = initWidth; 
-    height = initHeight; 
-    origin = initOrigin; 
-  } 
-  ​ 
-  public Rectangle(int initWidth, int initHeight, int xPos, int yPos) { 
-    width = initWidth; 
-    height = initHeight; 
-    origin = new Point(xPos,​yPos);​ 
-  } 
-  ​ 
-  // Αυτός λέγεται copy constructor:​ είναι κατασκευαστής που παίρνει ως παράμετρο 
-  // ένα ήδη υπάρχον αντικείμενο τύπου Rectangle και κατασκευάζει ένα αντίγραφο. 
-  public Rectangle (Rectangle other) { 
-    width = other.width;​ 
-    height = other.height;​ 
-    origin = new Point(other.origin);​ // εδώ καλούμε τον copy constructor της κλάσης Point 
-  } 
-    ​ 
- 
-  public void setWidth(int newWidth ) { 
-    width = newWidth; 
-  } 
-  ​ 
-  public int getWidth() { 
-    return width; 
-  } 
-    ​ 
-  public void setHeight(int newHeight ) { 
-    height = newHeight; 
-  } 
-  ​ 
-  public int getHeight() { 
-    return height; 
-  } 
-    ​ 
-  public void setColor(int[] setColor) { 
-    color = setColor; 
-  } 
-  ​ 
-  public int[] getColor() { 
-    return color; 
-  } 
-  ​ 
-  public void setOrigin(Point newOrigin) { 
-    origin = newOrigin; 
-  } 
-  ​ 
-  public Point getOrigin() { 
-    return origin; 
-  }    
-} 
-</​code>​ 
- 
  
  
 |Προηγούμενο:​ [[:​java:​class_fields| Τα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο:​ [[:​java:​class_constructors | Κατασκευαστές της κλάσης ]]| |Προηγούμενο:​ [[:​java:​class_fields| Τα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο:​ [[:​java:​class_constructors | Κατασκευαστές της κλάσης ]]|
  
java/class_methods.txt · Last modified: 2019/02/22 08:23 by gthanos