java:class_constructors
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:class_constructors [2017/02/16 09:45] – [Κατασκευαστές της κλάσης] gthanos | java:class_constructors [2022/02/23 10:17] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 8: | Line 8: | ||
Για παράδειγμα, | Για παράδειγμα, | ||
- | <code java> | + | <code java Rectangle.java> |
- | code java Rectangle.java> | + | |
public class Rectangle { | public class Rectangle { | ||
int width; | int width; | ||
Line 23: | Line 22: | ||
</ | </ | ||
- | Ο ρόλος του κατασκευαστή είναι να δεσμεύσει την απαραίτητη μνήμη για την δημιουργία του αντικειμένου και να αρχικοποιήσει τα πεδία της κλάσης με βάση τις αρχικές παραμέτρους με τις οποίες καλείται. | + | Ο ρόλος του κατασκευαστή είναι να δεσμεύσει την απαραίτητη μνήμη για την δημιουργία του αντικειμένου και να αρχικοποιήσει τα πεδία της κλάσης με βάση τις αρχικές παραμέτρους με τις οποίες καλείται. Η κλήση του κατασκευαστή γίνεται πάντα με χρήση του τελεστή **new** και θα τη δούμε σε επόμενη ενότητα. |
+ | <WRAP tip 80% center round> | ||
Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή. Εάν δεν δηλώσετε κατασκευαστή σε κάποια κλάση ο // | Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή. Εάν δεν δηλώσετε κατασκευαστή σε κάποια κλάση ο // | ||
+ | </ | ||
- | Στο προηγούμενο παράδειγμα της κλάσης **Rectangle** εάν υποθέσουμε ότι αυτή δεν έχει κατασκευαστή ο // | + | ===== 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() { | + | |
- | } | + | |
} | } | ||
</ | </ | ||
- | , ο οποίος | + | Ο // |
- | < | + | < |
+ | public Rectangle() { | ||
width = 0; | width = 0; | ||
height = 0; | height = 0; | ||
origin = null; | origin = null; | ||
+ | } | ||
</ | </ | ||
- | με βάση τους [[java: | ||
- | ===== Υπερφόρτωση κατασκευαστών ===== | ||
- | Ανάλογη με την υπερφόρτωση μεθόδων είναι και η υπερφόρτωση κατασκευαστών. Όπως μπορούμε να έχουμε πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα, | + | με βάση τους [[java: |
+ | |||
+ | ===== Διαφορετικοί κατασκευαστές σε μία κλάση ===== | ||
+ | |||
+ | Ανάλογη με την υπερφόρτωση μεθόδων είναι και η "υπερφόρτωση" | ||
<code java> | <code java> | ||
Line 57: | Line 61: | ||
</ | </ | ||
+ | O πρώτος κατασκευαστής λαμβάνει ως τρίτο όρισμα ένα αντικείμενο τύπου Point, το οποίο το αναθέτει στο πεδίο origin. Ο δεύτερος κατασκευαστής λαμβάνει ως τρίτο και τέταρτο όρισμα δύο ακεραίους από τους οποίους κατασκευάζει ένα νέο αντικείμενο τύπου Point. | ||
<code java Rectangle.java> | <code java Rectangle.java> | ||
- | public | + | 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 | ||
- | | + | void setWidth(int newWidth ) { |
width = newWidth; | width = newWidth; | ||
} | } | ||
| | ||
- | | + | int getWidth() { |
return width; | return width; | ||
} | } | ||
| | ||
- | | + | void setHeight(int newHeight ) { |
height = newHeight; | height = newHeight; | ||
} | } | ||
| | ||
- | | + | int getHeight() { |
return height; | return height; | ||
} | } | ||
| | ||
- | | + | |
+ | return origin; | ||
+ | } | ||
+ | |||
+ | | ||
origin = newOrigin; | origin = newOrigin; | ||
} | } | ||
| | ||
- | | + | |
- | | + | origin.setX(newX); |
- | } | + | origin.setY(newY); |
+ | } | ||
+ | | ||
} | } | ||
</ | </ | ||
- | + | |Προηγούμενο: | |
- | + | ||
- | |Προηγούμενο: | + | |
java/class_constructors.1487238317.txt.gz · Last modified: 2017/02/16 09:45 (external edit)