Τι είναι ο Κατασκευαστής στην Java;
Το CONSTRUCTOR είναι μια ειδική μέθοδος που χρησιμοποιείται για την προετοιμασία ενός νέου αντικειμένου και καλείται αμέσως μετά την εκχώρηση της μνήμης για το αντικείμενο. Μπορεί να χρησιμοποιηθεί για την προετοιμασία των αντικειμένων σε επιθυμητές τιμές ή προεπιλεγμένες τιμές κατά τη στιγμή της δημιουργίας αντικειμένων. Δεν είναι υποχρεωτικό ο κωδικοποιητής να γράψει έναν κατασκευαστή για μια τάξη.
Εάν δεν παρέχεται κατασκευαστής καθορισμένος από τον χρήστη για μια κλάση, ο μεταγλωττιστής αρχικοποιεί τις μεταβλητές μελών στις προεπιλεγμένες τιμές του.
- αριθμητικοί τύποι δεδομένων ορίζονται σε 0
- οι τύποι δεδομένων char έχουν οριστεί σε μηδενικό χαρακτήρα ('\ 0')
- οι μεταβλητές αναφοράς έχουν οριστεί σε μηδέν
Σε αυτό το σεμινάριο, θα μάθετε-
- Κανόνες για τη δημιουργία ενός Κατασκευαστή
- Υπερφόρτωση κατασκευαστή στην Java
- Αλυσίδα κατασκευαστή
Κανόνες για τη δημιουργία Java Κατασκευαστή
- Έχει το ίδιο όνομα με την τάξη
- Δεν πρέπει να επιστρέφει μια τιμή ούτε καν άκυρη
Παράδειγμα 1 : Δημιουργήστε τον πρώτο σας κατασκευαστή στην Java
Βήμα 1) Πληκτρολογήστε το ακόλουθο πρόγραμμα κατασκευής στον επεξεργαστή Java.
class Demo{int value1;int value2;Demo(){value1 = 10;value2 = 20;System.out.println("Inside Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();d1.display();}}
Βήμα 2) Αποθήκευση, εκτέλεση και μεταγλώττιση του προγράμματος κατασκευής στην Java και παρατηρήστε την έξοδο.
Παραγωγή:
Inside ConstructorValue1 === 10Value2 === 20
Υπερφόρτωση κατασκευαστή στην Java
Η υπερφόρτωση Java Constructor είναι μια τεχνική στην οποία μια κλάση μπορεί να έχει οποιονδήποτε αριθμό κατασκευαστών που διαφέρουν στη λίστα παραμέτρων. Ο μεταγλωττιστής διαφοροποιεί αυτούς τους κατασκευαστές λαμβάνοντας υπόψη τον αριθμό των παραμέτρων στη λίστα και τον τύπο τους.
Παραδείγματα έγκυρων κατασκευαστών για λογαριασμό λογαριασμού είναι
Account(int a);Account (int a,int b);Account (String a,int b);
Παράδειγμα 2 : Για να κατανοήσετε την υπερφόρτωση κατασκευαστή σε Java
Βήμα 1) Πληκτρολογήστε τον κωδικό στον επεξεργαστή.
class Demo{int value1;int value2;/*Demo(){value1 = 10;value2 = 20;System.out.println("Inside 1st Constructor");}*/Demo(int a){value1 = a;System.out.println("Inside 2nd Constructor");}Demo(int a,int b){value1 = a;value2 = b;System.out.println("Inside 3rd Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();Demo d2 = new Demo(30);Demo d3 = new Demo(30,40);d1.display();d2.display();d3.display();}}
Βήμα 2) Αποθήκευση, μεταγλώττιση και εκτέλεση του κώδικα.
Βήμα 3) Σφάλμα =?. Δοκιμάστε και εντοπίστε το σφάλμα πριν προχωρήσετε στο επόμενο βήμα της υπερφόρτωσης κατασκευαστή Java
Βήμα 4) Κάθε τάξη έχει έναν προεπιλεγμένο Κατασκευαστή στην Java. Ο προεπιλεγμένος υπερφορτωμένος κατασκευαστής Java για κλάση Demo είναι Demo () . Σε περίπτωση που δεν παρέχετε αυτόν τον κατασκευαστή, ο μεταγλωττιστής το δημιουργεί για εσάς και αρχικοποιεί τις μεταβλητές σε προεπιλεγμένες τιμές. Μπορείτε να επιλέξετε να παρακάμψετε αυτόν τον προεπιλεγμένο κατασκευαστή και να αρχικοποιήσετε τις μεταβλητές στις επιθυμητές τιμές σας όπως φαίνεται στο Παράδειγμα 1.
Εάν όμως ορίσετε έναν παραμετρημένο κατασκευαστή όπως το Demo (int a) και θέλετε να χρησιμοποιήσετε τον προεπιλεγμένο κατασκευαστή Java Demo (), είναι υποχρεωτικό να το καθορίσετε.
Με άλλα λόγια, σε περίπτωση παράκαμψης του κατασκευαστή υπερφόρτωσης στην Java και θέλετε να χρησιμοποιήσετε τον προεπιλεγμένο κατασκευαστή Java, πρέπει να προσδιοριστεί.
Βήμα 5) Γραμμή αποτυχίας # 4-8. Αποθήκευση, μεταγλώττιση και εκτέλεση του κώδικα.
Αλυσίδα κατασκευαστή
Σκεφτείτε ένα σενάριο όπου μια βασική τάξη επεκτείνεται από ένα παιδί. Κάθε φορά που δημιουργείται ένα αντικείμενο της παιδικής τάξης, ο κατασκευαστής της τάξης των γονέων καλείται πρώτα. Αυτό ονομάζεται αλυσίδα κατασκευαστή.
Παράδειγμα 3: Για να κατανοήσετε την αλυσίδα του κατασκευαστή
Βήμα 1) Αντιγράψτε τον ακόλουθο κώδικα στον επεξεργαστή.
class Demo{int value1;int value2;Demo(){value1 = 1;value2 = 2;System.out.println("Inside 1st Parent Constructor");}Demo(int a){value1 = a;System.out.println("Inside 2nd Parent Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){DemoChild d1 = new DemoChild();d1.display();}}class DemoChild extends Demo{int value3;int value4;DemoChild(){//super(5);value3 = 3;value4 = 4;System.out.println("Inside the Constructor of Child");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);System.out.println("Value1 === "+value3);System.out.println("Value2 === "+value4);}}
Βήμα 2) Εκτελέστε τον κώδικα. Λόγω της αλυσίδας του κατασκευαστή, όταν δημιουργείται το αντικείμενο της παιδικής κλάσης DemoChild, το DemoChild () του κατασκευαστή της πρώτης τάξης καλείται πρώτα και αργότερα δημιουργείται ο κατασκευαστής DemoChild () του παιδιού. Αναμενόμενη έξοδος =
Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4
Βήμα 3) Μπορεί να παρατηρήσετε ότι ο κατασκευαστής της επίδειξης γονικής κλάσης έχει παρακαμφθεί. Τι γίνεται αν θέλετε να καλέσετε την παράκαμψη επίδειξης κατασκευαστή (int a) αντί της προεπιλεγμένης επίδειξης κατασκευαστή () κατά τη δημιουργία του παιδικού σας αντικειμένου;
Σε τέτοιες περιπτώσεις, μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί "σούπερ" για να καλέσετε παρακαμφθέντες κατασκευαστές της μητρικής τάξης.
Σύνταξη:-
super();--or--super(parameter list);
Παράδειγμα: Εάν ο κατασκευαστής σας είναι σαν Demo (String Name, int a) θα καθορίσετε το super ("Java", 5) Εάν χρησιμοποιείται, η λέξη-κλειδί super πρέπει να είναι η πρώτη γραμμή κώδικα στον κατασκευαστή της θυγατρικής τάξης.
Βήμα 4) Γραμμή αποτυχίας # 26 και εκτελέστε τον κωδικό. Παρατηρήστε την έξοδο.
Παραγωγή:
Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4