java:class_constructors
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| java:class_constructors [2017/02/16 09:30] – created gthanos | java:class_constructors [2022/02/23 10:17] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Κατασκευαστές της κλάσης ====== | ====== Κατασκευαστές της κλάσης ====== | ||
| - | Οι κατασκευαστές μιας κλάσης είναι ειδικές μέθοδοι | + | Οι κατασκευαστές μιας κλάσης είναι ειδικές μέθοδοι |
| + | - έχουν προσδιοριστή πρόσβασης **public**. | ||
| + | - δεν έχουν επιστρεφόμενο τύπο και | ||
| + | - το όνομα τους ταυτίζεται με το όνομα της κλάσης. | ||
| + | |||
| + | Για παράδειγμα, | ||
| - | <code java> | + | <code java Rectangle.java> |
| - | code java Rectangle.java> | + | |
| public class Rectangle { | public class Rectangle { | ||
| - | | ||
| int width; | int width; | ||
| int height; | int height; | ||
| Line 19: | Line 22: | ||
| </ | </ | ||
| - | ===== Υπερφόρτωση κατασκευαστών ===== | + | Ο ρόλος του κατασκευαστή είναι να δεσμεύσει την απαραίτητη μνήμη για την δημιουργία του αντικειμένου και να αρχικοποιήσει τα πεδία της κλάσης με βάση τις αρχικές παραμέτρους με τις οποίες καλείται. Η κλήση του |
| - | Ανάλογη με την υπερφόρτωση μεθόδων είναι και η υπερφόρτωση κατασκευαστών. Όπως μπορούμε να έχουμε πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα, | + | <WRAP tip 80% center round> |
| + | Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή. Εάν δεν δηλώσετε κατασκευαστή σε κάποια κλάση ο // | ||
| + | </ | ||
| + | |||
| + | ===== Default κατασκευαστής ===== | ||
| + | |||
| + | Στο προηγούμενο παράδειγμα της κλάσης **Rectangle** εάν υποθέσουμε ότι αυτή δεν έχει κατασκευαστή | ||
| + | |||
| + | <code java Rectangle.java> | ||
| + | public class Rectangle { | ||
| + | int width; | ||
| + | int height; | ||
| + | Point origin; | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | Ο // | ||
| + | <code java> | ||
| + | public Rectangle() { | ||
| + | width = 0; | ||
| + | height = 0; | ||
| + | origin = null; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | με βάση τους [[java: | ||
| + | |||
| + | ===== Διαφορετικοί κατασκευαστές σε μία κλάση ===== | ||
| + | |||
| + | Ανάλογη με την υπερφόρτωση μεθόδων είναι και η "υπερφόρτωση" | ||
| <code java> | <code java> | ||
| Line 28: | 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 51: | 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.1487237427.txt.gz · Last modified: 2017/02/16 09:30 (external edit)
