java:class_constructors

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Κατασκευαστές της κλάσης ====== Οι κατασκευαστές μιας κλάσης είναι ειδικές μέθοδοι με τα εξής χαρακτηριστικά: - έχουν προσδιοριστή πρόσβασης **public**. - δεν έχουν επιστρεφόμενο τύπο και - το όνομα τους ταυτίζεται με το όνομα της κλάσης. Για παράδειγμα, για την κλάση **Rectangle** που δίνεται παρακάτω ο κατασκευαστής της κλάσης έχει ως εξής: <code java> code java Rectangle.java> public class Rectangle { int width; int height; Point origin; public Rectangle(int initWidth, int initHeight, Point initOrigin) { width = initWidth; height = initHeight; origin = initOrigin; } } </code> Ο ρόλος του κατασκευαστή είναι να δεσμεύσει την απαραίτητη μνήμη για την δημιουργία του αντικειμένου και να αρχικοποιήσει τα πεδία της κλάσης με βάση τις αρχικές παραμέτρους με τις οποίες καλείται. Η κλήση του κατασκευαστή γίνεται πάντα με χρήση του τελεστή **new** και θα τη δούμε σε επόμενη ενότητα. <WRAP tip 80% center round> Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή. Εάν δεν δηλώσετε κατασκευαστή σε κάποια κλάση ο //compiler// δημιουργεί τον default κατασκευαστή, δηλ. ένα κατασκευαστή χωρίς ορίσματα και αρχικοποιεί τα πεδία της κλάση σε **μηδέν (0)** για βασικούς τύπουs ή σε **null** για αναφορικούς/σύνθετους τύπους. </WRAP> Στο προηγούμενο παράδειγμα της κλάσης **Rectangle** εάν υποθέσουμε ότι αυτή δεν έχει κατασκευαστή ο //compiler// θα δημιουργήσει τον παρακάτω κατασκευαστή <code java> code java Rectangle.java> public class Rectangle { int width; int height; Point origin; public Rectangle() { } } </code> , ο οποίος με τη σειρά του αρχικοποιεί τις τιμές ως εξής <code> width = 0; height = 0; origin = null; </code> με βάση τους [[java:variables#Προεπιλεγμένες τιμές μεταβλητών|κανόνες αυτόματης αρχικοποίησης μεταβλητών]]. ===== Πολλαπλοί κατασκευαστές σε μία κλάση ===== Ανάλογη με την υπερφόρτωση μεθόδων είναι και η υπερφόρτωση κατασκευαστών. Όπως μπορούμε να έχουμε πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικά ορίσματα, έτσι μπορούμε να έχουμε και πολλούς κατασκευαστές με διαφορετικά ορίσματα. Δείτε το παράδειγμα που ακολουθεί για την κλάση Rectangle της προηγούμενης ενότητας. Στο παράδειγμα αυτό η κλάση διαθέτει τους παρακάτω δύο κατασκευαστές <code java> public Rectangle(int initWidth, int initHeight, Point initOrigin); public Rectangle(int initWidth, int initHeight, int xPos, int yPos); </code> <code java Rectangle.java> public class Rectangle { // the Rectangle class has 3 fields private int width; private int height; private Point origin; // the Rectangle class has two constructors 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); } // the Rectangel class has 3 methods 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 setOrigin(Point newOrigin) { origin = newOrigin; } public Point getOrigin() { return origin; } } </code> |Προηγούμενο: [[:java:class_methods| Οι μέθοδοι της κλάσης ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:objects | Δημιουργία Αντικειμένων ]]|

java/class_constructors.1487238696.txt.gz · Last modified: 2017/02/16 09:51 by gthanos