Ένας κατασκευαστής Java δημιουργεί μια νέα παρουσία ενός ήδη καθορισμένου αντικειμένου. Αυτό το άρθρο περιγράφει τον τρόπο χρήσης των μεθόδων κατασκευής Java για να δημιουργήσετε ένα αντικείμενο Πρόσωπο.
Σημείωση: Πρέπει να δημιουργήσετε δύο αρχεία στον ίδιο φάκελο για αυτό το παράδειγμα: Person.java ορίζει την κατηγορία Πρόσωπο και PersonExample.java περιέχει το κύρια μέθοδος που δημιουργεί αντικείμενα ατόμων.
Η μέθοδος κατασκευής
Ας ξεκινήσουμε δημιουργώντας μια κλάση προσώπου που έχει τέσσερα ιδιωτικά πεδία: firstName, lastName, διεύθυνση και username. Αυτά τα πεδία είναι ιδιωτικές μεταβλητές και μαζί οι τιμές τους συνθέτουν την κατάσταση ενός αντικειμένου. Προσθέσαμε επίσης τις πιο απλές μεθόδους κατασκευαστών:
δημόσια τάξη Πρόσωπο {
ιδιωτικό String firstName;
ιδιωτικό String lastName;
ιδιωτική διεύθυνση συμβολοσειράς.
ιδιωτικό όνομα χρήστη String;
// Η μέθοδος του κατασκευαστή
δημόσιο Πρόσωπο ()
{
}
}
Η μέθοδος του κατασκευαστή είναι παρόμοια με οποιαδήποτε άλλη δημόσια μέθοδο εκτός από το ότι μοιράζεται το ίδιο όνομα με την κλάση και δεν μπορεί να επαναφέρει μια τιμή. Δεν μπορεί να έχει καμία, μία ή πολλές παραμέτρους.
Προς το παρόν, η μέθοδος κατασκευής μας δεν κάνει τίποτα καθόλου και είναι μια καλή στιγμή να εξετάσουμε τι σημαίνει αυτό για την αρχική κατάσταση του αντικειμένου του ατόμου. Αν αφήσαμε τα πράγματα όπως είναι ή δεν συμπεριλάβαμε μια μέθοδο κατασκευαστή στην κατηγορία ατόμων μας (στο Ιάβα μπορείτε να ορίσετε μια τάξη χωρίς ένα), τότε τα πεδία δεν θα έχουν τιμές - και σίγουρα θέλουμε το άτομό μας να έχει όνομα και διεύθυνση καθώς και άλλα χαρακτηριστικά. Αν νομίζετε ότι υπάρχει πιθανότητα να μην χρησιμοποιηθεί το αντικείμενο όπως περιμένετε και να μην αρχικοποιηθούν τα πεδία όταν δημιουργείται το αντικείμενο, πάντα να τα ορίσετε με μια προεπιλεγμένη τιμή:
δημόσια τάξη Πρόσωπο {
ιδιωτικό String firstName = "";
ιδιωτικό String lastName = "";
ιδιωτική διεύθυνση συμβολοσειράς = "";
ιδιωτικό όνομα χρήστη String = "";
// Η μέθοδος του κατασκευαστή
δημόσιο Πρόσωπο ()
{
}
}
Κανονικά, για να διασφαλίσουμε ότι η μέθοδος κατασκευαστή είναι χρήσιμη, θα την σχεδιάζαμε να περιμένουμε τις παραμέτρους. Οι τιμές που περάσατε από αυτές τις παραμέτρους μπορούν να χρησιμοποιηθούν για να ορίσετε τις τιμές των ιδιωτικών πεδίων:
δημόσια τάξη Πρόσωπο {
ιδιωτικό String firstName;
ιδιωτικό String lastName;
ιδιωτική διεύθυνση συμβολοσειράς.
ιδιωτικό όνομα χρήστη String;
// Η μέθοδος του κατασκευαστή
δημόσια άτομο (String personFirstname, String personLastName, String personAddress, String personUsername)
{
firstName = personFirstName;
lastName = personLastName;
διεύθυνση = διεύθυνση προσώπου;
username = personUsername;
}
// Μια μέθοδος για την εμφάνιση της κατάστασης του αντικειμένου στην οθόνη
δημόσιο κενό displayPersonDetails ()
{
System.out.println ("Όνομα:" + firstName + "" + lastName);
System.out.println ("διεύθυνση:" + διεύθυνση);
System.out.println ("Όνομα χρήστη:" + όνομα χρήστη);
}
}
Η μέθοδος κατασκευής μας περιμένει τώρα να μεταβιβαστούν οι τιμές των τεσσάρων χορδών. Στη συνέχεια χρησιμοποιούνται για να ορίσουν την αρχική κατάσταση του αντικειμένου. Προσθέσαμε επίσης μια νέα μέθοδο που ονομάζεται displayPersonDetails () για να μπορέσουμε να δούμε την κατάσταση του αντικειμένου μετά τη δημιουργία του.
Κλήση της μεθόδου κατασκευής
Σε αντίθεση με άλλες μεθόδους ενός αντικειμένου, πρέπει να ονομάζεται η μέθοδος του κατασκευαστή χρησιμοποιώντας τη λέξη "νέα":
δημόσια τάξη PersonExample {
δημόσιο static κενό main (String [] args) {
Πρόσωπο dave = νέο πρόσωπο ("Dave", "Davidson", "12 Main St.", "DDavidson")?
dave.displayPersonDetails ();
}
}
Εδώ κάνουμε:
- Για να δημιουργήσετε τη νέα εμφάνιση του αντικειμένου "Πρόσωπο", ορίζουμε πρώτα μια μεταβλητή τύπου "Πρόσωπο" που θα κρατήσει το αντικείμενο. Σε αυτό το παράδειγμα, το ονομάσαμε dave.
- Από την άλλη πλευρά του σημείου ισότητας, ονομάζουμε τη μέθοδο κατασκευαστή της κλάσης Person μας και την περάσαμε σε τέσσερις τιμές συμβολοσειράς. Η μέθοδος του κατασκευαστή μας θα λάβει αυτές τις τέσσερις τιμές και θα ορίσει την αρχική κατάσταση του αντικειμένου που θα είναι: firstName = "Dave", lastName = "Davidson", διεύθυνση = "12 Main St", username = "DDavidson".
Παρατηρήστε πώς έχουμε μεταβεί στην κύρια κλάση της Java για να καλέσουμε το αντικείμενο Πρόσωπο. Όταν εργάζεστε με αντικείμενα, τα προγράμματα θα καλύπτουν πολλαπλά αρχεία .java. Βεβαιωθείτε ότι τα αποθηκεύσατε στον ίδιο φάκελο. Για να μεταγλωττίσετε και να εκτελέσετε το πρόγραμμα, απλά καταρτίστε και εκτελέστε την Java κύρια κατηγορία αρχείο (δηλ. PersonExample.java). Ο μεταγλωττιστής Java είναι αρκετά έξυπνος για να συνειδητοποιήσει ότι θέλετε να καταρτίσετε το Person.java καθώς επίσης μπορείτε να δείτε ότι το χρησιμοποιήσατε στην κλάση PersonExample.
Ονομασία παραμέτρων
Ο μεταγλωττιστής Java συγχέεται εάν οι παράμετροι της μεθόδου του κατασκευαστή έχουν τα ίδια ονόματα με τα ιδιωτικά πεδία. Σε αυτό το παράδειγμα, μπορείτε να δείτε ότι έχουμε διακρίνει μεταξύ τους προθέτοντας τις παραμέτρους με τη λέξη "πρόσωπο". Αξίζει να σημειωθεί ότι υπάρχει ένας άλλος τρόπος. Μπορούμε να χρησιμοποιήσουμε αυτήν την λέξη-κλειδί "αυτή":
// Η μέθοδος του κατασκευαστή
δημόσιο πρόσωπο (String firstName, String lastName, διεύθυνση String, όνομα χρήστη String)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = διεύθυνση;
this.username = username;
}
Η λέξη-κλειδί "αυτή" λέει στον μεταγλωττιστή Java ότι η μεταβλητή που θα εκχωρηθεί είναι η τιμή που ορίζεται από την κλάση, όχι την παράμετρο. Πρόκειται για ένα θέμα προγραμματισμού, αλλά αυτή η μέθοδος μας βοηθά να ορίσουμε παραμέτρους του κατασκευαστή χωρίς να χρειάζεται να χρησιμοποιήσουμε πολλαπλά ονόματα.
Περισσότερο από μία μέθοδο κατασκευαστή
Κατά το σχεδιασμό των κλάσεων αντικειμένων σας, δεν περιορίζεστε στη χρήση μόνο μιας μεθόδου κατασκευαστών. Μπορεί να αποφασίσετε ότι υπάρχουν μερικοί τρόποι με τους οποίους μπορεί να προετοιμαστεί ένα αντικείμενο. Ο μόνος περιορισμός στη χρήση περισσότερων από μία μεθόδων κατασκευής είναι ότι οι παράμετροι πρέπει να διαφέρουν.
Φανταστείτε ότι τη στιγμή που δημιουργούμε το αντικείμενο Πρόσωπο, ίσως να μην γνωρίζουμε το όνομα χρήστη. Ας προσθέσουμε μια νέα μέθοδο κατασκευαστή που ορίζει την κατάσταση του αντικειμένου πρόσωπο χρησιμοποιώντας μόνο την πρώτηName, lastName και τη διεύθυνση:
δημόσια τάξη Πρόσωπο {
ιδιωτικό String firstName;
ιδιωτικό String lastName;
ιδιωτική διεύθυνση συμβολοσειράς.
ιδιωτικό όνομα χρήστη String;
// Η μέθοδος του κατασκευαστή
δημόσιο πρόσωπο (String firstName, String lastName, διεύθυνση String, όνομα χρήστη String)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = διεύθυνση;
this.username = username;
}
// Η νέα μέθοδος κατασκευαστή
Δημόσιο Πρόσωπο (String firstName, String lastName, διεύθυνση String)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = διεύθυνση;
this.username = "";
}
// Μια μέθοδος για την εμφάνιση της κατάστασης του αντικειμένου στην οθόνη
δημόσιο κενό displayPersonDetails ()
{
System.out.println ("Όνομα:" + firstName + "" + lastName);
System.out.println ("διεύθυνση:" + διεύθυνση);
System.out.println ("Όνομα χρήστη:" + όνομα χρήστη);
}
}
Σημειώστε ότι η δεύτερη μέθοδος κατασκευαστή ονομάζεται επίσης "Πρόσωπο" και επίσης δεν επιστρέφει μια τιμή. Η μόνη διαφορά μεταξύ αυτής και της πρώτης μεθόδου κατασκευαστή είναι οι παράμετροι - αυτή τη φορά αναμένει μόνο τρία τιμές στοιχειοσειράς: firstName, lastName και διεύθυνση.
Μπορούμε τώρα να δημιουργήσουμε αντικείμενα ατόμων με δύο διαφορετικούς τρόπους:
δημόσια τάξη PersonExample {
δημόσιο static κενό main (String [] args) {
Πρόσωπο dave = νέο πρόσωπο ("Dave", "Davidson", "12 Main St.", "DDavidson")?
Πρόσωπο jim = νέο πρόσωπο ("Jim", "Davidson", "15 Kings Road")?
dave.displayPersonDetails ();
jim.displayPersonDetails ();
}
}
Πρόσωπο dave θα δημιουργηθεί με firstName, lastName, διεύθυνση και username. Πρόσωπο jim, Ωστόσο, δεν θα αποκτηθεί όνομα χρήστη, δηλαδή το όνομα χρήστη θα είναι η κενή συμβολοσειρά: username = "".
Μια γρήγορη ανασκόπηση
Οι μέθοδοι κατασκευής ονομάζονται μόνο όταν δημιουργείται μια νέα παρουσία ενός αντικειμένου. Αυτοί:
- Πρέπει να έχει το ίδιο όνομα με την κλάση
- Μην επιστρέφετε μια τιμή
- Δεν μπορεί να έχει κανένα, ένα, ή πολλές παράμετροι
- Μπορεί να αριθμεί περισσότερα από ένα, εφόσον κάθε μέθοδος κατασκευαστή έχει διαφορετικό σύνολο παραμέτρων
- Μπορώ να έχω ονόματα παραμέτρων το ίδιο με τα ιδιωτικά πεδία, εφόσον χρησιμοποιείται η λέξη "αυτή"
- Καλούνται με τη χρήση της "νέας" λέξης-κλειδιού