User Tools

Site Tools


java:class_constructors

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:class_constructors [2017/02/16 09:45] – [Κατασκευαστές της κλάσης] gthanosjava:class_constructors [2022/02/23 10:17] (current) – external edit 127.0.0.1
Line 8: Line 8:
 Για παράδειγμα, για την κλάση **Rectangle** που δίνεται παρακάτω ο κατασκευαστής της κλάσης έχει ως εξής: Για παράδειγμα, για την κλάση **Rectangle** που δίνεται παρακάτω ο κατασκευαστής της κλάσης έχει ως εξής:
  
-<code java> +<code java Rectangle.java>
-code java Rectangle.java>+
 public class Rectangle { public class Rectangle {
   int width;   int width;
Line 23: Line 22:
 </code> </code>
  
-Ο ρόλος του κατασκευαστή είναι να δεσμεύσει την απαραίτητη μνήμη για την δημιουργία του αντικειμένου και να αρχικοποιήσει τα πεδία της κλάσης με βάση τις αρχικές παραμέτρους με τις οποίες καλείται.+Ο ρόλος του κατασκευαστή είναι να δεσμεύσει την απαραίτητη μνήμη για την δημιουργία του αντικειμένου και να αρχικοποιήσει τα πεδία της κλάσης με βάση τις αρχικές παραμέτρους με τις οποίες καλείται. Η κλήση του κατασκευαστή γίνεται πάντα με χρήση του τελεστή **new** και θα τη δούμε σε επόμενη ενότητα.
  
 +<WRAP tip 80% center round>
 Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή. Εάν δεν δηλώσετε κατασκευαστή σε κάποια κλάση ο //compiler// δημιουργεί τον default κατασκευαστή, δηλ. ένα κατασκευαστή χωρίς ορίσματα και αρχικοποιεί τα πεδία της κλάση σε **μηδέν (0)** για βασικούς τύπουs ή σε **null** για αναφορικούς/σύνθετους τύπους.  Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή. Εάν δεν δηλώσετε κατασκευαστή σε κάποια κλάση ο //compiler// δημιουργεί τον default κατασκευαστή, δηλ. ένα κατασκευαστή χωρίς ορίσματα και αρχικοποιεί τα πεδία της κλάση σε **μηδέν (0)** για βασικούς τύπουs ή σε **null** για αναφορικούς/σύνθετους τύπους. 
 +</WRAP>
  
-Στο προηγούμενο παράδειγμα της κλάσης **Rectangle** εάν υποθέσουμε ότι αυτή δεν έχει κατασκευαστή ο //compiler// θα δημιουργήσει τον παρακάτω κατασκευαστή+===== Default κατασκευαστής =====
  
-<code java> +Στο προηγούμενο παράδειγμα της κλάσης **Rectangle** εάν υποθέσουμε ότι αυτή δεν έχει κατασκευαστή 
-code java Rectangle.java>+ 
 +<code java Rectangle.java>
 public class Rectangle { public class Rectangle {
   int width;   int width;
   int height;   int height;
   Point origin;   Point origin;
-     + 
-  public Rectangle() { +
-  }+
 } }
 </code> </code>
  
-, ο οποίος με τη σειρά του αρχικοποιεί τις τιμές ως εξής +Ο //compiler// θα δημιουργήσει τον παρακάτω κατασκευαστή, ο οποίος αρχικοποιεί όλες τις τιμές σε μηδέν για τους βασικούς (//primitive//) τύπους δεδομένων και σε null για τους αναφορικούς (//reference//τύπους δεδομένων. 
-<code>+<code java> 
 +public Rectangle() {
   width = 0;   width = 0;
   height = 0;   height = 0;
   origin = null;   origin = null;
 +}
 </code> </code>
-με βάση τους [[java:variables|κανόνες αυτόματης αρχικοποίησης μεταβλητών]]. 
-===== Υπερφόρτωση κατασκευαστών ===== 
  
-Ανάλογη με την υπερφόρτωση μεθόδων είναι και η υπερφόρτωση κατασκευαστών. Όπως μπορούμε να έχουμε πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα, έτσι μπορούμε να έχουμε και πολλούς κατασκευαστές με διαφορετικά ορίσματα. Δείτε το παράδειγμα που ακολουθεί για την κλάση Rectangle της προηγούμενης ενότητας. Στο παράδειγμα αυτό η κλάση διαθέτει τους παρακάτω δύο κατασκευαστές+με βάση τους [[java:variables#Προεπιλεγμένες τιμές μεταβλητών|κανόνες αυτόματης αρχικοποίησης μεταβλητών]]. 
 + 
 +===== Διαφορετικοί κατασκευαστές σε μία κλάση ===== 
 + 
 +Ανάλογη με την υπερφόρτωση μεθόδων είναι και η "υπερφόρτωσηκατασκευαστών. Όπως μπορούμε να έχουμε πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα, έτσι μπορούμε να έχουμε και πολλούς κατασκευαστές με διαφορετικά ορίσματα. Δείτε το παράδειγμα που ακολουθεί για την κλάση Rectangle της προηγούμενης ενότητας. Στο παράδειγμα αυτό η κλάση διαθέτει τους παρακάτω δύο κατασκευαστές
  
 <code java> <code java>
Line 57: Line 61:
 </code> </code>
  
 +O πρώτος κατασκευαστής λαμβάνει ως τρίτο όρισμα ένα αντικείμενο τύπου Point, το οποίο το αναθέτει στο πεδίο origin. Ο δεύτερος κατασκευαστής λαμβάνει ως τρίτο και τέταρτο όρισμα δύο ακεραίους από τους οποίους κατασκευάζει ένα νέο αντικείμενο τύπου Point.
  
 <code java Rectangle.java> <code java Rectangle.java>
-public class Rectangle {+class Rectangle {
          
   // the Rectangle class has 3 fields   // the Rectangle class has 3 fields
Line 80: Line 85:
          
   // the Rectangel class has 3 methods   // the Rectangel class has 3 methods
-  public void setWidth(int newWidth ) {+  void setWidth(int newWidth ) {
     width = newWidth;     width = newWidth;
   }   }
      
-  public int getWidth() {+  int getWidth() {
     return width;     return width;
   }   }
          
-  public void setHeight(int newHeight ) {+  void setHeight(int newHeight ) {
     height = newHeight;     height = newHeight;
   }   }
      
-  public int getHeight() {+  int getHeight() {
     return height;     return height;
   }   }
      
-  public void setOrigin(Point newOrigin) {+  Point getOrigin() { 
 +    return origin; 
 +  } 
 +   
 +  void setOrigin(Point newOrigin) {
     origin = newOrigin;     origin = newOrigin;
   }   }
      
-  public Point getOrigin() { +  void setOrigin(int newX, int newY) { 
-    return origin; +    origin.setX(newX); 
-  }   +    origin.setY(newY)
 +  } 
 +    
 } }
 </code> </code>
  
- +|Προηγούμενο: [[:java:class_methodsΟι μέθοδοι της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:objects | Δημιουργία Αντικειμένων ]]|
- +
-|Προηγούμενο: [[:java:class_fieldsΤα πεδία της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:objects | Δημιουργία Αντικειμένων ]]|+
  
java/class_constructors.1487238317.txt.gz · Last modified: 2017/02/16 09:45 (external edit)