Τι είναι το Constructor στην Java και πώς το χρησιμοποιείτε;

Τι είναι το Constructor στην Java και πώς το χρησιμοποιείτε;

Στον αντικειμενοστραφή προγραμματισμό, ένας κατασκευαστής είναι μια ειδική συνάρτηση που καλείτε για να δημιουργήσετε ένα αντικείμενο. Οι κατασκευαστές έχουν πολλά μοναδικά χαρακτηριστικά που τους επιτρέπουν να λειτουργούν.





Στην Java, ονομάζετε έναν κατασκευαστή σύμφωνα με την κλάση του. Ο κατασκευαστής είναι μια μέθοδος, που ορίζεται στην κλάση στην οποία εφαρμόζεται. Οι κατασκευαστές Java ενδέχεται να χρησιμοποιούν υπερφόρτωση για να παρέχουν εναλλακτική συμπεριφορά. Οι κατασκευαστές στην Java μπορούν επίσης να κάνουν χρήση της κληρονομικότητας για επαναχρησιμοποίηση κώδικα.





Γιατί Χρειάζεστε Κατασκευαστές Τέλος πάντων;

Οι κατασκευαστές αποτελούν τη βάση του αντικειμενοστραφούς προγραμματισμού και η Java δεν αποτελεί εξαίρεση. Αυτό το παράδειγμα δείχνει πώς μπορείτε να ορίσετε μια βασική κλάση κύκλου με μία ιδιότητα δεδομένων και μία μέθοδο:





public class Circle {
public double radius;
public double area() { return 3.14159 * radius * radius; }
}

Στη συνέχεια, μπορείτε να δημιουργήσετε ένα παράδειγμα αυτής της κατηγορίας και να αλληλεπιδράσετε μαζί της:

Circle c = new Circle();
c.radius = 2;
System.out.println(c.area()); // 12.56636

Αλλά αυτό είναι λιγότερο βολικό και στιβαρό από όσο θα μπορούσε να είναι. Είναι καλή πρακτική αντικειμενοστρεφής η ενσωμάτωση δεδομένων, προστατεύοντάς τα από μη εξουσιοδοτημένη πρόσβαση:



public class Circle {
private double radius;
public double area() { return 3.14159 * radius * radius; }
public void setRadius(double r) { radius = r; }
}

Τώρα ο κωδικός κλήσης μπορεί να χρησιμοποιήσει το setRadius μέθοδο και δεν χρειάζεται να ανησυχείτε για τις λεπτομέρειες εφαρμογής του:

Μπορώ να χρησιμοποιήσω παιχνίδια ps3 στο ps4
Circle c = new Circle();
c.setRadius(2);

Οι κατασκευαστές προσφέρουν έναν ακόμη καλύτερο τρόπο παροχής δεδομένων σε ένα αντικείμενο όταν το δημιουργείτε. Χρησιμοποιούνται πολύ συχνά για την εκκίνηση ιδιοτήτων, όπως το ακτίνα κύκλου εδώ.





Παραδείγματα Απλών Κατασκευαστών

Ο πιο βασικός κατασκευαστής είναι αυτός χωρίς επιχειρήματα, που δεν κάνει τίποτα:

public class Circle {
public Circle() {}
}

Δείτε επίσης: Μάθετε πώς να δημιουργείτε τάξεις σε Java





Εάν δεν ορίσετε έναν κατασκευαστή, η Java θα παρέχει μια προεπιλεγμένη που συμπεριφέρεται με τον ίδιο τρόπο.

Σημειώστε μερικά πράγματα:

  1. Το όνομα του κατασκευαστή ταιριάζει με το όνομα της κλάσης.
  2. Αυτός ο κατασκευαστής χρησιμοποιεί το δημόσιο τροποποιητή πρόσβασης, ώστε οποιοσδήποτε άλλος κώδικας να μπορεί να τον καλέσει.
  3. Ο κατασκευαστής δεν περιλαμβάνει έναν τύπο επιστροφής. Σε αντίθεση με άλλες μεθόδους, οι κατασκευαστές δεν μπορούν να επιστρέψουν μια τιμή.

Οι κατασκευαστές συνήθως πραγματοποιούν κάποιο είδος προετοιμασίας. Σημειώστε ότι ο παραπάνω κώδικας δεν αρχικοποιεί την τιμή της ακτίνας. Σε αυτήν την περίπτωση, η γλώσσα θα την ορίσει αυτόματα στο μηδέν. Αυτή η κατηγορία αναμένει από έναν χρήστη να χρησιμοποιήσει setRadius () Το Για να χρησιμοποιήσετε μια πιο χρήσιμη προεπιλογή από το 0, μπορείτε να την εκχωρήσετε εντός του κατασκευαστή:

public class Circle {
public Circle() { radius = 1; }
}

Οι κύκλοι που δημιουργούνται με αυτήν την κατηγορία θα έχουν τουλάχιστον τώρα μια πραγματική περιοχή! Ο καλών εξακολουθεί να μπορεί να χρησιμοποιήσει setRadius () για να παρέχει ακτίνα διαφορετική από 1. Αλλά ο κατασκευαστής μπορεί να είναι ακόμη πιο φιλικός:

public class Circle {
public Circle(double r) { radius = r; }
}

Τώρα μπορείτε να δημιουργήσετε κύκλους με συγκεκριμένη ακτίνα από τη γέννηση:

πού μπορώ να κατεβάσω δωρεάν ταινίες
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

Αυτή είναι μια πολύ κοινή χρήση για κατασκευαστές. Συχνά θα τα χρησιμοποιείτε για την προετοιμασία μεταβλητών σε τιμές παραμέτρων.

Υπερφόρτωση κατασκευαστή

Μπορείτε να καθορίσετε περισσότερους από έναν κατασκευαστές σε έναν ορισμό κλάσης:

public Circle() { radius = 1; }
public Circle(double r) { radius = r; }

Αυτό δίνει στον κώδικα κλήσης μια επιλογή για τον τρόπο κατασκευής αντικειμένων:

Circle c1 = new Circle(2);
Circle c2 = new Circle();
System.out.println(c1.area() + ', ' + c2.area()); // 12.56636, 3.14159

Με έναν ελαφρώς πιο περίπλοκο κύκλο, μπορείτε να εξερευνήσετε πιο ενδιαφέροντες κατασκευαστές. Αυτή η έκδοση αποθηκεύει τη θέση της:

public class Circle {
public double x, y, radius;
public Circle() { radius = r; }
public Circle(double r) { radius = r; }
public Circle(double x, double y, double r) {
this.x = x; this.y = y; radius = r;
}

public double area() { return 3.14159 * radius * radius; }
}

Τώρα μπορείτε να δημιουργήσετε έναν Κύκλο χωρίς ορίσματα, μία ακτίνα ή συντεταγμένες x και y παράλληλα με την ακτίνα. Αυτό είναι το ίδιο είδος υπερφόρτωσης που υποστηρίζει η Java για οποιαδήποτε μέθοδο.

Αλυσίδα κατασκευαστή

Τι θα λέγατε για τη δημιουργία ενός Κύκλου, βασισμένου σε έναν άλλο; Αυτό θα μας δώσει τη δυνατότητα να αντιγράψουμε εύκολα τους κύκλους. Παρατηρήστε το ακόλουθο μπλοκ:

public Circle(Circle c) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

Αυτό θα λειτουργήσει, αλλά επαναλαμβάνει κάποιον κώδικα άσκοπα. Δεδομένου ότι η κλάση Circle έχει ήδη έναν κατασκευαστή που χειρίζεται τις μεμονωμένες ιδιότητες, μπορείτε να την καλέσετε χρησιμοποιώντας το Αυτό λέξη -κλειδί:

public Circle(Circle c) {
this(c.x, c.y, c.radius);
}

Αυτή είναι μια μορφή αλυσίδας κατασκευαστή, καλώντας έναν κατασκευαστή από έναν άλλο. Χρησιμοποιεί λιγότερο κώδικα και βοηθά να συγκεντρωθεί μια λειτουργία αντί να αναπαραχθεί.

Καλώντας τον γονέα κατασκευαστή

Η άλλη μορφή της αλυσίδας του κατασκευαστή συμβαίνει όταν ένας κατασκευαστής καλεί έναν κατασκευαστή της γονικής τάξης του. Αυτό μπορεί να είναι είτε ρητό είτε σιωπηρό. Για να καλέσετε ρητά έναν γονικό κατασκευαστή, χρησιμοποιήστε το σούπερ λέξη -κλειδί:

super(x, y);

Φανταστείτε μια κατηγορία σχήματος να ενεργεί ως γονέας του κύκλου:

public class Shape {
double x, y;
public Shape(double _x, double _y) { x = _x; y = _y; }
}

Χειρίζεται την κοινή τοποθέτηση για όλα τα σχήματα, καθώς αυτή είναι η λειτουργικότητα που όλοι μοιράζονται. Τώρα η κλάση Circle μπορεί να εκχωρήσει το χειρισμό θέσης στον γονέα της:

public class Circle extends Shape {
double radius;
public Circle(double r) { super(0, 0); radius = r; }
public Circle(double x, double y, double r) {
super(x, y);
radius = r;
}
}

Η κατασκευή υπερκατηγορίας είναι μια πολύ σημαντική πτυχή κληρονομικότητα στην Java Το Η γλώσσα το επιβάλλει από προεπιλογή εάν δεν καλέσετε ρητά σούπερ στους κατασκευαστές σας.

Πρόσβαση σε τροποποιητές σε κατασκευαστές

Οι κατασκευαστές μπορούν να συμπεριλάβουν έναν τροποποιητή πρόσβασης στην υπογραφή τους. Όπως και άλλες μέθοδοι, αυτό καθορίζει ποιοι τύποι καλούντος μπορούν να έχουν πρόσβαση στον κατασκευαστή:

public class Test {
private static Test uniqueInstance = new Test();
private Test() { }
public static Test getInstance() {
return uniqueInstance;
}
}

Αυτό είναι ένα πιο περίπλοκο παράδειγμα, οπότε φροντίστε να το καταλάβετε:

  • Η τάξη δεν είναι αφηρημένη, οπότε είναι δυνατόν να υποδείξουμε από αυτήν.
  • Ο κατασκευαστής είναι ιδιωτικός, οπότε μόνο αυτή η κλάση μπορεί να δημιουργήσει μια νέα παρουσία.
  • Μέσω μιας στατικής ιδιότητας και μιας μεθόδου, η κλάση εκθέτει μια μοναδική μοναδική παρουσία της ίδιας στους καλούντες.

Χρησιμοποιήστε Κατασκευαστές στην Java για να δημιουργήσετε αντικείμενα

Οι κατασκευαστές είναι ζωτικής σημασίας για τον αντικειμενοστραφή προγραμματισμό. Σας επιτρέπουν να δημιουργείτε αντικείμενα, κάτι που είναι απαραίτητο!

Στην Java, οι κατασκευαστές μοιάζουν με άλλες μεθόδους και λειτουργούν με τον ίδιο περίπου τρόπο. Θα πρέπει να θυμάστε τους ειδικούς κανόνες σχετικά με τους προεπιλεγμένους κατασκευαστές, την υπερφόρτωση και την αλυσίδα κατασκευαστών. Εάν οι κατασκευαστές είναι νέοι για εσάς, ίσως θελήσετε να διαβάσετε τις άλλες βασικές έννοιες Java που πρέπει να μάθετε κατά την έναρξη.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ 10 βασικές έννοιες Java που πρέπει να μάθετε όταν ξεκινάτε

Είτε γράφετε ένα GUI, είτε αναπτύσσετε λογισμικό από τον διακομιστή είτε μια εφαρμογή για κινητά χρησιμοποιώντας Android, η εκμάθηση της Java θα σας εξυπηρετήσει καλά. Ακολουθούν ορισμένες βασικές έννοιες Java που θα σας βοηθήσουν να ξεκινήσετε.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Ιάβα
  • Συμβουλές κωδικοποίησης
Σχετικά με τον Συγγραφέα Μπόμπι Τζακ(Δημοσιεύθηκαν 58 άρθρα)

Ο Bobby είναι λάτρης της τεχνολογίας που εργάστηκε ως προγραμματιστής λογισμικού για περισσότερες από δύο δεκαετίες. Είναι παθιασμένος με το gaming, εργάζεται ως Reviews Editor στο Switch Player Magazine και είναι βυθισμένος σε όλες τις πτυχές της διαδικτυακής δημοσίευσης και ανάπτυξης ιστού.

πώς να μειώσετε τον άλλο χώρο αποθήκευσης στο iphone
Περισσότερα από τον Bobby Jack

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή