Στον αντικειμενοστραφή προγραμματισμό, ένας κατασκευαστής είναι μια ειδική λειτουργία που καλείτε για να δημιουργήσετε ένα αντικείμενο. Οι κατασκευαστές έχουν πολλά μοναδικά χαρακτηριστικά που τους επιτρέπουν να λειτουργούν.
Στην Java, ονομάζετε έναν κατασκευαστή μετά την τάξη του. Ένας κατασκευαστής είναι μια μέθοδος, που ορίζεται στην κλάση στην οποία εφαρμόζεται. Οι κατασκευαστές Java ενδέχεται να χρησιμοποιούν υπερφόρτωση για να παρέχουν εναλλακτική συμπεριφορά. Οι κατασκευαστές στην Java μπορούν επίσης να κάνουν χρήση της κληρονομιάς για την επαναχρησιμοποίηση του κώδικα.
Γιατί χρειάζεστε ούτως ή άλλως κατασκευαστές;
Οι κατασκευαστές είναι ο βασικός άξονας αντικειμενοστραφής προγραμματισμός, και η Java δεν αποτελεί εξαίρεση. Αυτό το παράδειγμα δείχνει πώς μπορείτε να ορίσετε μια βασική κλάση Κύκλου με μία ιδιότητα δεδομένων και μία μέθοδο:
δημόσιος κύκλος τάξης {
δημόσια διπλή ακτίνα
δημόσια διπλή περιοχή () {επιστροφή 3.14159 * ακτίνα * ακτίνα; }
}
Στη συνέχεια, μπορείτε να δημιουργήσετε μια παρουσία αυτής της τάξης και να αλληλεπιδράσετε με αυτήν:
Κύκλος c = νέος κύκλος ();
c. ακτίνα = 2;
System.out.println (c.area ()); // 12.56636
Αλλά αυτό είναι λιγότερο βολικό και στιβαρό από ό, τι θα μπορούσε να είναι. Είναι καλή αντικειμενοστραφή πρακτική να ενσωματώνετε δεδομένα, προστατεύοντάς τα από μη εξουσιοδοτημένη πρόσβαση:
δημόσιος κύκλος τάξης {
ιδιωτικός διπλή ακτίνα
δημόσια διπλή περιοχή () {επιστροφή 3.14159 * ακτίνα * ακτίνα; }
public void setRadius (double r) {ακτίνα = r; }
}
Τώρα ο κωδικός κλήσης μπορεί να χρησιμοποιήσει το setRadius μέθοδος και δεν χρειάζεται να ανησυχείτε για τις λεπτομέρειες εφαρμογής της:
Κύκλος c = νέος κύκλος ();
c.setRadius (2);
Οι κατασκευαστές προσφέρουν έναν ακόμη καλύτερο τρόπο παροχής δεδομένων σε ένα αντικείμενο όταν το δημιουργείτε. Χρησιμοποιούνται πολύ συχνά για την αρχικοποίηση ιδιοτήτων, όπως το ακτίνα κύκλου εδώ.
Παραδείγματα απλών κατασκευαστών
Ο πιο βασικός κατασκευαστής είναι αυτός χωρίς επιχειρήματα, που δεν κάνει τίποτα:
δημόσιος κύκλος τάξης {
δημόσιος κύκλος () {}
}
Δείτε επίσης: Μάθετε πώς να δημιουργείτε μαθήματα στην Java
Εάν δεν ορίσετε έναν κατασκευαστή, η Java θα παρέχει μια προεπιλεγμένη που συμπεριφέρεται με τον ίδιο τρόπο.
Σημειώστε μερικά πράγματα:
- Το όνομα του κατασκευαστή ταιριάζει με το όνομα της τάξης.
- Αυτός ο κατασκευαστής χρησιμοποιεί το δημόσιο Πρόσβαση τροποποιητή, οπότε οποιοσδήποτε άλλος κωδικός μπορεί να το ονομάσει
- Ένας κατασκευαστής δεν περιλαμβάνει τύπο επιστροφής. Σε αντίθεση με άλλες μεθόδους, οι κατασκευαστές δεν μπορούν να επιστρέψουν μια τιμή.
Οι κατασκευαστές πραγματοποιούν συνήθως κάποιο είδος αρχικοποίησης. Σημειώστε ότι ο παραπάνω κώδικας δεν προετοιμάζει την τιμή της ακτίνας. Σε αυτήν την περίπτωση, η γλώσσα θα την ορίσει αυτόματα στο μηδέν. Αυτή η τάξη αναμένει από έναν χρήστη να χρησιμοποιήσει setRadius (). Για να χρησιμοποιήσετε μια πιο χρήσιμη προεπιλογή από το 0, μπορείτε να την αντιστοιχίσετε στον κατασκευαστή:
δημόσιος κύκλος τάξης {
δημόσιος κύκλος () {radius = 1; }
}
Οι κύκλοι που δημιουργούνται με αυτήν την τάξη θα έχουν τουλάχιστον τώρα μια πραγματική περιοχή! Ο καλών μπορεί ακόμα να χρησιμοποιήσει setRadius () για παροχή ακτίνας διαφορετικής από 1. Αλλά ο κατασκευαστής μπορεί να είναι ακόμη πιο φιλικός:
δημόσιος κύκλος τάξης {
δημόσιος κύκλος (διπλό r) {ακτίνα = r; }
}
Τώρα μπορείτε να δημιουργήσετε κύκλους με συγκεκριμένη ακτίνα από τη γέννηση:
Κύκλος c = νέος κύκλος (2);
System.out.println (c.area ()); // 12.56636
Αυτή είναι μια πολύ κοινή χρήση για κατασκευαστές. Θα τις χρησιμοποιείτε συχνά για να προετοιμάσετε μεταβλητές σε τιμές παραμέτρων.
Υπερφόρτωση κατασκευαστή
Μπορείτε να καθορίσετε περισσότερους από έναν κατασκευαστές σε έναν ορισμό κλάσης:
δημόσιος κύκλος () {radius = 1; }
δημόσιος κύκλος (διπλό r) {ακτίνα = r; }
Αυτό δίνει στον κωδικό κλήσης την επιλογή του τρόπου κατασκευής αντικειμένων:
Κύκλος c1 = νέος κύκλος (2);
Κύκλος c2 = νέος κύκλος ();
System.out.println (c1.area () + "," + c2.area ()); // 12.56636, 3.14159
Με έναν ελαφρώς πιο περίπλοκο κύκλο, μπορείτε να εξερευνήσετε πιο ενδιαφέροντες κατασκευαστές. Αυτή η έκδοση αποθηκεύει τη θέση της:
δημόσιος κύκλος τάξης {
δημόσιο διπλό x, ε, ακτίνα κύκλου;
δημόσιος κύκλος () {radius = r; }
δημόσιος κύκλος (διπλό r) {ακτίνα = r; }
δημόσιος κύκλος (διπλός x, διπλός, διπλός r) {
αυτό.x = x; αυτό.y = y; ακτίνα = r;
}
δημόσια διπλή περιοχή () {επιστροφή 3.14159 * ακτίνα * ακτίνα; }
}
Τώρα μπορείτε να δημιουργήσετε έναν κύκλο χωρίς ορίσματα, μία ακτίνα ή συντεταγμένες x και y παράλληλα με την ακτίνα. Αυτό είναι το ίδιο είδος υπερφόρτωσης που υποστηρίζει η Java για οποιαδήποτε μέθοδο.
Αλυσίδα κατασκευαστή
Τι γίνεται με τη δημιουργία ενός Κύκλου, βάσει ενός άλλου; Αυτό θα μας έδινε τη δυνατότητα να αντιγράψουμε εύκολα τους Κύκλους. Παρατηρήστε το ακόλουθο μπλοκ:
δημόσιος κύκλος (κύκλος γ) {
αυτό.x = c.x;
αυτό.y = c.y;
this.radius = c.radius;
}
Αυτό θα λειτουργήσει, αλλά επαναλαμβάνει κάποιο κώδικα άσκοπα. Επειδή η κλάση Circle διαθέτει ήδη έναν κατασκευαστή που χειρίζεται τις μεμονωμένες ιδιότητες, μπορείτε να το καλέσετε αντί να χρησιμοποιήσετε Αυτό λέξη-κλειδί:
δημόσιος κύκλος (κύκλος γ) {
αυτό (c.x, c.y, c.radius);
}
Αυτή είναι μια μορφή αλυσίδας κατασκευαστή, καλώντας έναν κατασκευαστή από τον άλλο. Χρησιμοποιεί λιγότερο κώδικα και βοηθά στη συγκέντρωση μιας λειτουργίας παρά στην αναπαραγωγή της.
Κλήση του γονικού κατασκευαστή
Η άλλη μορφή αλυσίδας κατασκευαστή εμφανίζεται όταν ένας κατασκευαστής καλεί κατασκευαστή της μητρικής του κατηγορίας. Αυτό μπορεί να είναι είτε ρητό είτε σιωπηρό. Για να καλέσετε έναν γονικό κατασκευαστή ρητά, χρησιμοποιήστε το σούπερ λέξη-κλειδί:
σούπερ (x, y);
Φανταστείτε μια τάξη Shape που ενεργεί ως γονέας του Κύκλου:
δημόσια τάξη Σχήμα {
διπλό x, y;
δημόσιο σχήμα (διπλό _x, διπλό _y) {x = _x; y = _y; }
}
Διαχειρίζεται την κοινή θέση για όλα τα σχήματα, καθώς αυτή είναι η λειτουργικότητα που μοιράζονται όλοι. Τώρα η κλάση κύκλου μπορεί να αναθέσει τον χειρισμό θέσης στον γονέα της:
δημόσια τάξη Κύκλος επεκτείνει το σχήμα {
διπλή ακτίνα
δημόσιος κύκλος (διπλό r) {super (0, 0); ακτίνα = r; }
δημόσιος κύκλος (διπλός x, διπλός, διπλός r) {
σούπερ (x, y);
ακτίνα = r;
}
}
Η κατασκευή Superclass είναι μια πολύ σημαντική πτυχή του κληρονομιά στην Ιάβα. Η γλώσσα την επιβάλλει από προεπιλογή, εάν δεν καλείτε ρητά σούπερ στους κατασκευαστές σας.
Πρόσβαση τροποποιητών σε Κατασκευαστές
Οι κατασκευαστές μπορούν να περιλαμβάνουν έναν τροποποιητή πρόσβασης στην υπογραφή τους. Όπως και άλλες μέθοδοι, αυτό καθορίζει ποιοι τύποι καλούντος μπορούν να έχουν πρόσβαση στον κατασκευαστή:
δοκιμή δημόσιας τάξης {
private static Test uniqueInstance = νέα δοκιμή ();
ιδιωτική δοκιμή () {}
δημόσια στατική δοκιμή getInstance () {
επιστροφή μοναδική
}
}
Αυτό είναι ένα πιο περίπλοκο παράδειγμα, οπότε προσέξτε να το καταλάβετε:
- Η τάξη δεν είναι αφηρημένη, οπότε είναι δυνατή η παρουσίαση από αυτήν.
- Ο κατασκευαστής είναι ιδιωτικός, ώστε μόνο αυτή η τάξη να μπορεί να δημιουργήσει μια νέα παρουσία.
- Μέσω μιας στατικής ιδιότητας και μεθόδου, η τάξη εκθέτει μια μοναδική, μοναδική παρουσία της στους καλούντες.
Χρησιμοποιήστε Κατασκευαστές στην Java για να δημιουργήσετε αντικείμενα
Οι κατασκευαστές είναι ζωτικής σημασίας για αντικειμενοστραφή προγραμματισμό. Σας επιτρέπουν να δημιουργήσετε αντικείμενα, τα οποία είναι απαραίτητα!
Στην Java, οι κατασκευαστές μοιάζουν με άλλες μεθόδους και λειτουργούν με τον ίδιο τρόπο. Θα πρέπει να θυμάστε τους ειδικούς κανόνες σχετικά με τους προεπιλεγμένους κατασκευαστές, την υπερφόρτωση και την αλυσίδα κατασκευαστή. Εάν οι κατασκευαστές είναι νέοι για εσάς, ίσως θελήσετε να διαβάσετε τις άλλες βασικές έννοιες Java που πρέπει να μάθετε όταν ξεκινάτε.
Είτε γράφετε ένα GUI, αναπτύσσετε λογισμικό από διακομιστή ή μια εφαρμογή για κινητά χρησιμοποιώντας Android, η εκμάθηση Java θα σας εξυπηρετήσει καλά. Ακολουθούν ορισμένες βασικές έννοιες Java που θα σας βοηθήσουν να ξεκινήσετε.
Διαβάστε Επόμενο
- Προγραμματισμός
- Ιάβα
- Συμβουλές κωδικοποίησης
Ο Bobby είναι λάτρης της τεχνολογίας που εργάστηκε ως προγραμματιστής λογισμικού για τις περισσότερες από δύο δεκαετίες. Είναι παθιασμένος με το gaming, εργάζεται ως Editor Editor στο Switch Player Magazine και είναι βυθισμένος σε όλες τις πτυχές των διαδικτυακών εκδόσεων και της ανάπτυξης ιστού.
Εγγραφείτε στο Newsletter μας
Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!
Ένα ακόμη βήμα…!
Επιβεβαιώστε τη διεύθυνση email σας στο email που μόλις σας στείλαμε.