java constructor class
Αυτό το σεμινάριο θα συζητήσει το Java Constructor, τους τύπους και τις έννοιες του, όπως υπερφόρτωση κατασκευαστή και αλυσίδα κατασκευαστή με παραδείγματα κώδικα:
Από τα προηγούμενα μαθήματά μας, γνωρίζουμε ότι η παρουσία μιας τάξης ονομάζεται αντικείμενο. Δημιουργείται ένα αντικείμενο μιας τάξης χρησιμοποιώντας τη λέξη-κλειδί «νέα». Μια ειδική μέθοδος που ονομάζεται «κατασκευαστής» καλείται όταν δημιουργούμε ένα αντικείμενο με μια νέα λέξη-κλειδί ή όταν το αντικείμενο είναι instantiated.
Ο κατασκευαστής ορίζεται ως ένα μπλοκ κώδικα για την αρχικοποίηση του αντικειμένου κλάσης. Είναι πανομοιότυπο με τη μέθοδο, αλλά δεν είναι μέθοδος. Ωστόσο, μπορεί να χαρακτηριστεί ως «ειδική μέθοδος» στην Java.
=> Δείτε εδώ για να δείτε εδώ το A-Z Of Java Training Tutorials.
Τι θα μάθετε:
- Κατασκευαστής Java
- συμπέρασμα
Κατασκευαστής Java
Ο κατασκευαστής Java χρησιμοποιείται για την προετοιμασία του αντικειμένου που μόλις δημιουργήθηκε. Ένα αντικείμενο πρέπει να έχει ορισμένα δεδομένα πριν χρησιμοποιηθεί στο πρόγραμμα. Ως εκ τούτου, χρησιμοποιούμε τον κατασκευαστή έτσι ώστε να μπορούμε να αντιστοιχίσουμε ορισμένα αρχικά δεδομένα στο αντικείμενο.
Ως απλό παράδειγμα, σκεφτείτε μια κατηγορία ABC για την οποία πρέπει να δημιουργήσουμε ένα αντικείμενο. Ας δημιουργήσουμε ένα αντικείμενο «myObj» για την τάξη ABC χρησιμοποιώντας μια νέα λέξη-κλειδί.
ABC myObj = new ABC ();
Η παραπάνω δήλωση δημιουργεί ένα αντικείμενο myObj. Όταν δημιουργείται αυτό το αντικείμενο, ο κατασκευαστής για την κλάση ABC χωρίς όρισμα ονομάζεται (ABC () απεικονίζει ότι δεν υπάρχουν επιχειρήματα για τον κατασκευαστή). Καθώς δεν υπάρχουν επιχειρήματα για τον παραπάνω κατασκευαστή, τα πεδία μέλους του myObj θα αρχικοποιηθούν στις προεπιλεγμένες αρχικές τιμές τους.
Για παράδειγμα,
- Οι αριθμητικοί τύποι δεδομένων όπως το int είναι 0.
- Η μεταβλητή τιμή τύπου δεδομένων Char έχει οριστεί σε χαρακτήρα null (‘ 0’).
- Οι αναφορές ρυθμίζονται σε μηδέν.
Σε αυτό το σεμινάριο, θα συζητήσουμε λεπτομερώς τους κατασκευαστές μαζί με τους διάφορους κατασκευαστές που χρησιμοποιούνται στην Java.
Πώς να δημιουργήσετε έναν κατασκευαστή στην Java
Για να δημιουργήσουμε έναν κατασκευαστή στην Java, πρέπει να ακολουθήσουμε ορισμένους κανόνες όπως δίνονται παρακάτω.
- Ο κατασκευαστής τάξης έχει το ίδιο όνομα με αυτό της τάξης.
- Δεν μπορεί να υπάρχει κατασκευαστής που να είναι τελικός, αφηρημένος, συγχρονισμένος ή στατικός. Αυτό συμβαίνει επειδή το Τελικό ενεργεί ως σταθερή, η περίληψη δεν μπορεί να τεκμηριωθεί. Ενώ συγχρονίζεται χρησιμοποιείται στην περίπτωση πολλαπλών νημάτων, και η στατική λέξη-κλειδί χρησιμοποιείται σε επίπεδο τάξης.
- Μπορούμε να χρησιμοποιήσουμε τροποποιητές πρόσβασης με τους κατασκευαστές.
- Ένας κατασκευαστής δεν μπορεί να έχει έναν τύπο επιστροφής.
Για παράδειγμα,ας ορίσουμε έναν μαθητή τάξης ως εξής:
class Student{ String name; int roll_no; }
Μπορούμε να δημιουργήσουμε αντικείμενα της παραπάνω κλάσης χρησιμοποιώντας τη νέα λέξη-κλειδί. Κατά τη δημιουργία του αντικειμένου, μπορούμε να προετοιμάσουμε τις διμελείς μεταβλητές αυτής της κλάσης παρέχοντας έναν κατασκευαστή. Σημειώστε ότι ακόμη και αν δεν παρέχουμε κατασκευαστή και εκτελέστε την παρακάτω δήλωση,
Φοιτητής = νέος φοιτητής ();
Ακόμα, η Java θα εκτελέσει έναν προεπιλεγμένο κατασκευαστή που θα προετοιμάσει τις μεταβλητές δύο μελών στις προεπιλογές του συστήματός τους. Τώρα, εάν θέλουμε την αρχική τιμή του Student.name να είναι 'Keith' και το roll_no να είναι 27, τότε για να το κάνουμε αυτό μπορούμε να δημιουργήσουμε την ακόλουθη μέθοδο κατασκευής.
Student () { name = 'Keith'; roll_no = 27; }
Όταν δημιουργούμε ένα αντικείμενο της τάξης των μαθητών με την παρακάτω δήλωση
Student student = new Student ();
Στη συνέχεια, οι αρχικές τιμές του ονόματος μεταβλητής μέλους και roll_no θα είναι Keith και 27 αντίστοιχα.
Τώρα που δημιουργείται ένας κατασκευαστής, πότε θα καλείται;
Ένας κατασκευαστής καλείται κάθε φορά που δημιουργείται ένα αντικείμενο με τη νέα λέξη-κλειδί όπως στην παραπάνω περίπτωση. Όπως ήδη αναφέρθηκε, εάν δεν παρέχεται κατασκευαστής, η Java παρέχει έναν προεπιλεγμένο κατασκευαστή που καλείται όταν δημιουργείται το αντικείμενο χρησιμοποιώντας τη νέα λέξη-κλειδί.
Παράδειγμα κατασκευαστή
Το παρακάτω πρόγραμμα δείχνει ένα παράδειγμα κατασκευαστή στο οποίο έχουμε έναν απλό κατασκευαστή χωρίς ορίσματα. Αυτός ο κατασκευαστής απλώς εκχωρεί αρχικές τιμές στις μεταβλητές μελών του.
//class definition class classDemo{ int num1; int num2; //constructor classDemo(){ num1 = 100; num2 = 250; System.out.println('Inside ClassDemo::Constructor'); } public void display(){ System.out.println('num1 = '+ num1); System.out.println('num2 = '+ num2); } } class Main{ public static void main(String args()){ classDemo cd1 = new classDemo(); //create object of ClassDemo cd1.display(); } }
Παραγωγή:
Προεπιλεγμένος κατασκευαστής στην Java
Ο προεπιλεγμένος κατασκευαστής ονομάζεται επίσης Empty Constructor . Αυτός ο κατασκευαστής εισάγεται από τον μεταγλωττιστή Java στον κωδικό κλάσης όπου δεν υπάρχει κατασκευαστής που να υλοποιείται από τον προγραμματιστή. Ο προεπιλεγμένος κατασκευαστής εισάγεται κατά τη διάρκεια της μεταγλώττισης και ως εκ τούτου θα εμφανίζεται μόνο στο αρχείο «.class» και όχι στον πηγαίο κώδικα.
Εξετάστε την ακόλουθη τάξη Java.
αρχείο προέλευσης (.java) αρχείο τάξης (.class)
Στο παραπάνω σχήμα, το πρώτο σχήμα δείχνει τον πηγαίο κώδικα στον οποίο δεν έχουμε καθορίσει κατασκευαστή. Έτσι, όταν μεταγλωττίζουμε αυτόν τον κώδικα και δημιουργείται το αρχείο .class, μπορούμε να δούμε ότι ο μεταγλωττιστής Java έχει εισαγάγει έναν προεπιλεγμένο κατασκευαστή όπως φαίνεται στην παρακείμενη εικόνα (σε μπλε χρώμα).
Σημείωση:
Μερικές φορές χρησιμοποιείται ένας προεπιλεγμένος κατασκευαστής για να περιγράψει τον κατασκευαστή no-arg στην Java. Όμως αυτοί οι δύο όροι είναι διαφορετικοί στην πραγματικότητα. Ο κατασκευαστής No-arg είναι ένας τύπος κατασκευαστή στην Java που καθορίζεται από τον προγραμματιστή. Ο προεπιλεγμένος κατασκευαστής είναι ο κατασκευαστής που εισάγεται από τον μεταγλωττιστή Java.
πώς να αντιστρέψετε έναν πίνακα java
Ως εκ τούτου, παρόλο που αυτοί οι δύο όροι χρησιμοποιούνται εναλλακτικά από τους περισσότερους προγραμματιστές, συνιστάται να μην συγχέουμε αυτούς τους δύο όρους.
Όταν η Java εισάγει έναν προεπιλεγμένο κατασκευαστή, εάν το πρόγραμμα έχει μεταβλητές, τότε εκχωρούνται οι προεπιλεγμένες τιμές.
Ο παρακάτω πίνακας δείχνει τις προεπιλεγμένες τιμές κάθε τύπου δεδομένων.
Τύπος | Προεπιλεγμένη τιμή |
---|---|
απανθρακώνω | u0000 |
Αντικείμενο | Αναφορά μηδέν |
boolean | ψευδής |
ψηφιόλεξη | 0 |
μικρός | 0 |
int | 0 |
μακρύς | 0L |
φλοτέρ | 0,0f |
διπλό | 0,0d |
Το ακόλουθο πρόγραμμα δίνει ένα παράδειγμα προεπιλεγμένου κατασκευαστή στην Java.
class Main { int num; boolean flag; public static void main(String() args) { // A default constructor is called Main obj = new Main(); System.out.println('num:default value = ' + obj.num); System.out.println('flag:default value = ' + obj.flag); } }
Παραγωγή:
Τύποι Κατασκευαστών στην Ιάβα
Υπάρχουν δύο τύποι κατασκευαστών στην Java, όπως φαίνεται παρακάτω.
# 1) Κατασκευαστής No-arg
Ένας κατασκευαστής χωρίς ορίσματα ονομάζεται κατασκευαστής no-args ή no-argument. Εάν δεν έχουμε κατασκευαστή χωρίς ορίσματα, τότε ο μεταγλωττιστής Java δεν δημιουργεί έναν προεπιλεγμένο κατασκευαστή για την κλάση.
Γενικά, αν ορίσουμε έναν κατασκευαστή στην τάξη μας, τότε ο προεπιλεγμένος κατασκευαστής δεν εισάγεται από τον μεταγλωττιστή Java.
Δίνεται παρακάτω είναι ένα παράδειγμα του Κατασκευαστή No-arg
import java.io.*; class DemoClass { int num; String name; // no-args Constructor called when object is created DemoClass() { System.out.println('DemoClass::Constructor called'); System.out.println('Initial member variable values:'); System.out.println('num = ' + num + ' name = ' + name); } } class Main{ public static void main (String() args) { // this will invoke no-args Constructor DemoClass dc1 = new DemoClass(); } }
Παραγωγή:
Σε αυτό το πρόγραμμα, παρέχουμε έναν κατασκευαστή no-args. Εδώ, εκτυπώνουμε μερικά μηνύματα συμπεριλαμβανομένων των μεταβλητών μελών. Μπορούμε να δούμε στην έξοδο ότι εμφανίζονται τα μηνύματα από τον κατασκευαστή που δείχνουν ότι εκτελείται ο κατασκευαστής no-args.
# 2) Παράμετρος Κατασκευαστής
Ένας παράμετρος κατασκευαστής έχει μία ή περισσότερες παραμέτρους. Μπορούμε να χρησιμοποιήσουμε έναν παραμετροποιημένο κατασκευαστή σε περίπτωση που χρειαστεί να περάσουμε κάποιες αρχικές τιμές στη μεταβλητή μέλους της κλάσης.
import java.io.*; class DemoClass { // data members of the class. String name; int id; // parameterized constructor called when object is created DemoClass(String name, int id) { this.name = name; this.id = id; } } class Main { public static void main (String() args) { // this will invoke the parameterized constructor. DemoClass dc1 = new DemoClass('Java', 1); System.out.println('Tutorial Name :' + dc1.name + ', Id :' + dc1.id); } }
Παραγωγή:
Εδώ έχουμε παράσχει έναν παραμετροποιημένο κατασκευαστή που παίρνει δύο ορίσματα, δηλαδή όνομα και αναγνωριστικό.
Μέσα στο σώμα του κατασκευαστή, τα ορίσματα εκχωρούνται ως τιμές στο όνομα και το αναγνωριστικό μεταβλητών μέλους αντίστοιχα.
Στη συνέχεια, στην κύρια μέθοδο όταν δημιουργούμε ένα νέο αντικείμενο χρησιμοποιώντας τη νέα λέξη-κλειδί, μεταβιβάζουμε δύο τιμές στο όνομα της τάξης μετά από μια νέα λέξη-κλειδί. Αυτό δείχνει ότι καλούμε τον παραμετροποιημένο κατασκευαστή. Όταν εμφανίζουμε τις μεταβλητές μελών, μπορούμε να δούμε ότι έχουν τις τιμές που περάσαμε κατά τη δημιουργία του αντικειμένου.
Υπερφορτωμένοι κατασκευαστές στην Java
Τώρα τίθεται το ερώτημα εάν μια τάξη μπορεί να έχει περισσότερους από έναν κατασκευαστές ή μήπως μια τάξη μπορεί να έχει μόνο έναν κατασκευαστή;
Λοιπόν, μπορούμε να έχουμε πολλούς κατασκευαστές σε μια τάξη. Μια τάξη μπορεί να έχει όσους κατασκευαστές σε αυτήν αρκεί να έχουν υπερφορτωθεί σωστά.
Τι σημαίνει ακριβώς η υπερφόρτωση κατασκευαστών;
Κατασκευή Υπερφόρτωση είναι ένας μηχανισμός που επιτρέπει σε μια τάξη να έχει όσους κατασκευαστές έτσι ώστε όλοι αυτοί οι κατασκευαστές να έχουν διαφορετικές λίστες παραμέτρων, ανεξάρτητα από τον τύπο παραμέτρων ή τη σειρά των παραμέτρων.
Το παρακάτω πρόγραμμα δείχνει την υπερφόρτωση κατασκευαστή.
//class with multiple constructors class DemoClass{ int val1; int val2; //no args Constructor DemoClass(){ val1 = 10; val2 = 20; System.out.println('DemoClass:: No argument Constructor'); } //Overloaded Constructor DemoClass(int num1){ val1 = num1; val2 = num1; System.out.println('DemoClass:: Overloaded Constructor with one argument'); } //Overloaded DemoClass(int num1,int num2){ val1 = num1; val2 = num2; System.out.println('DemoClass:: Overloaded Constructor with two arguments'); } public void display(){ System.out.println('val1 === '+val1 + ' ; val2 === '+val2 ); } } class Main{ public static void main(String args()){ DemoClass d1 = new DemoClass(); //object with no-args Constructor d1.display(); DemoClass d2 = new DemoClass(10); //object with 1 arg Constructor d2.display(); DemoClass d3 = new DemoClass(20,40); //object with 2 arg Constructor d3.display(); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, έχουμε μια τάξη που περιέχει τρεις κατασκευαστές. Ο πρώτος κατασκευαστής είναι ένας κατασκευαστής no-arg, και στη συνέχεια έχουμε έναν με ένα επιχείρημα και δύο επιχειρήματα αντίστοιχα. Καθώς ο κατασκευαστής έχει μια μοναδική λίστα παραμέτρων, μπορούμε να πούμε ότι οι κατασκευαστές είναι υπερφορτωμένοι.
«This ()» Κατασκευαστής στην Java
Σε μια τάξη που περιέχει πολλούς κατασκευαστές, τι γίνεται αν θέλουμε να καλέσουμε έναν κατασκευαστή από έναν άλλο κατασκευαστή σε αυτήν την τάξη;
Για το σκοπό αυτό, χρησιμοποιούμε τη λέξη-κλειδί «αυτό» μέσα στον κατασκευαστή από τον οποίο θέλουμε να καλέσουμε έναν άλλο κατασκευαστή.
Επομένως, όταν μια τάξη έχει πολλούς κατασκευαστές, έναν κατασκευαστή χωρίς arg και έναν παραμετροποιημένο κατασκευαστή, χρησιμοποιούμε τη λέξη-κλειδί «αυτήν» για να καλέσουμε έναν παραμετροποιημένο κατασκευαστή από τον κατασκευαστή no-args. Αυτό ονομάζεται επίσης «Άμεση επίκληση του κατασκευαστή».
Γιατί χρειαζόμαστε αυτήν τη λέξη-κλειδί;
Το χρειαζόμαστε γιατί η ρητή επίκληση των κατασκευαστών δεν είναι δυνατή απευθείας χρησιμοποιώντας μόνο το όνομα του κατασκευαστή.
Σημεία που πρέπει να σημειώσετε:
- Η λέξη-κλειδί «αυτό» πρέπει να είναι η πρώτη δήλωση στον κατασκευαστή κλήσεων.
- Εάν ένας κατασκευαστής έχει «αυτήν» τη λέξη-κλειδί, τότε δεν μπορεί να έχει «σούπερ». Αυτό σημαίνει ότι ο κατασκευαστής μπορεί να έχει είτε σούπερ είτε αυτό.
class TestClass { TestClass() { //calling Parameterized Constructor this('SoftwareTestingHelp'); System.out.println('TestClass::No-args Constructor'); } TestClass(String str) { System.out.println('TestClass:: Parameterized Constructor(String):' + str); } } class Main{ public static void main(String() args) { TestClass obj = new TestClass(); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, έχουμε ένα 'TestClass' με δύο κατασκευαστές. Το ονομάζουμε αυτό ('SoftwareTestingHelp') από τον κατασκευαστή no-args. Αυτή είναι η ρητή επίκληση του παραμετροποιημένου κατασκευαστή.
Αντιγραφή κατασκευαστή σε Java
Γνωρίζουμε τον κατασκευαστή αντιγράφων στο C ++. Ο κατασκευαστής αντιγράφων είναι ένας κατασκευαστής που έχει αναφορά αντικειμένου ως όρισμα και δημιουργείται ένα νέο αντικείμενο χρησιμοποιώντας τα δεδομένα του αντικειμένου αναφοράς.
Το C ++ παρέχει έναν προεπιλεγμένο κατασκευαστή αντιγράφων εάν δεν παρέχεται στο πρόγραμμα.
Η Java παρέχει επίσης υποστήριξη για τον κατασκευαστή αντιγράφων, αλλά δεν παρέχει έναν προεπιλεγμένο κατασκευαστή αντιγράφων.
Το ακόλουθο πρόγραμμα Java δείχνει τον κατασκευαστή αντιγράφων χρησιμοποιώντας το κλασικό παράδειγμα σύνθετων αριθμών που έχουν πραγματικά και φανταστικά στοιχεία.
πώς να δημιουργήσετε μια λίστα στο java
class Complex { private double real, imaginary; // parametrized constructor public Complex(double real, double imaginary) { System.out.println('Complex:: parametrized constructor'); this.real = real; this.imaginary = imaginary; } // copy constructor Complex(Complex c) { System.out.println('Complex::Copy constructor called'); real = c.real; imaginary = c.imaginary; } // Overriding the toString of Object class @Override public String toString() { return '(' + real + ' + ' + imaginary + 'i)'; } } public class Main { public static void main(String() args) { Complex c1 = new Complex(1, 5); //calls parametrized constructor System.out.println('C1 = ' + c1); // copy constructor called Complex c2 = new Complex(c1); System.out.println('C2 = ' + c2); // this is a simple assignment operator Complex c3 = c2; } }
Παραγωγή:
Το παραπάνω πρόγραμμα έχει μια κλάση «Complex» που έχει έναν παραμετροποιημένο κατασκευαστή και έναν κατασκευαστή αντιγράφων. Στην κύρια μέθοδο πρώτα, δημιουργούμε ένα αντικείμενο c1 χρησιμοποιώντας έναν παραμετροποιημένο κατασκευαστή. Στη συνέχεια, χρησιμοποιώντας την παρακάτω δήλωση,
Complex c2 = new Complex (c1);
Η παραπάνω δήλωση καλεί τον κατασκευαστή αντιγράφων καθώς η αναφορά c1 μεταβιβάζεται στον κατασκευαστή κατά τη δημιουργία ενός νέου αντικειμένου c2.
Αλυσίδα κατασκευαστή στην Ιάβα
Η αλυσίδα κατασκευαστή είναι μια διαδικασία ενός κατασκευαστή που καλεί έναν άλλο κατασκευαστή της ίδιας κατηγορίας.
Ακόμη και όταν έχουμε κληρονομήσει από μια βασική τάξη, ο κατασκευαστής της βασικής τάξης καλείται πρώτα όταν δημιουργείται το αντικείμενο της παιδικής τάξης. Αυτό είναι επίσης ένα παράδειγμα αλυσίδας κατασκευαστή.
Στην Java, η αλυσίδα του Κατασκευαστή μπορεί να επιτευχθεί χρησιμοποιώντας δύο προσεγγίσεις:
- Μέσα στην ίδια τάξη : Όταν καλούμε έναν κατασκευαστή από έναν άλλο κατασκευαστή της ίδιας κλάσης, τότε μπορούμε να χρησιμοποιήσουμε αυτήν τη λέξη-κλειδί ().
- Από την κατηγορία βάσης: Ένας κατασκευαστής της βασικής κλάσης μπορεί να κληθεί από αυτόν της παραγόμενης κλάσης χρησιμοποιώντας την υπερ-λέξη-κλειδί.
Γιατί χρειαζόμαστε αλυσίδα κατασκευαστή;
Όταν θέλουμε να εκτελέσουμε πολλαπλές εργασίες στον κατασκευαστή μας, τότε αντί να εκτελέσουμε κάθε εργασία σε έναν κατασκευαστή, χωρίζουμε τις εργασίες σε πολλούς κατασκευαστές και στη συνέχεια καλούμε κατασκευαστές ο ένας από τον άλλο με αποτέλεσμα την αλυσίδα του κατασκευαστή.
Παρακάτω αναφέρονται μερικοί από τους κανόνες που πρέπει να ακολουθήσουμε κατά την εκτέλεση της αλυσίδας κατασκευαστή.
- Η αλυσίδα κατασκευαστή γίνεται με οποιαδήποτε σειρά και θα έχει τα ίδια αποτελέσματα.
- Η έκφραση «αυτή» η λέξη-κλειδί πρέπει να είναι η πρώτη έκφραση του κατασκευαστή.
- Πρέπει να έχουμε τουλάχιστον έναν κατασκευαστή χωρίς αυτήν τη λέξη-κλειδί.
Όταν έχουμε κληρονομιά στο πρόγραμμά μας, μπορούμε επίσης να κάνουμε κατασκευαστική αλυσίδα. Σε αυτήν την περίπτωση, η υποκατηγορία θα καλέσει τον κατασκευαστή της βασικής κλάσης. Κάνοντας αυτό, η δημιουργία αντικειμένων υποκατηγορίας ξεκινά με την αρχικοποίηση των μελών της superclass.
Τώρα θα εφαρμόσουμε την αλυσίδα κατασκευαστή στην Java χρησιμοποιώντας τις παραπάνω προσεγγίσεις.
# 1) Αλυσίδα κατασκευαστή στην ίδια τάξη
class DemoClass { // No args constructor DemoClass() { System.out.println('DemoClass::No args constructor'); } // parameterized constructor DemoClass(int val1) { // calls default constructor this(); System.out.println('DemoClass::Constructor with 1 argument: ' + val1); } // parameterized constructor DemoClass(int val1, int val2) { // invokes parameterized constructor with 1 argument this(5); System.out.print('DemoClass::constructor with 2 arguments:'); System.out.println('Product of 2 arguments = ' + val1 * val2); } } class Main{ public static void main(String args()) { // call parameterized constructor with 2 arguments new DemoClass(10, 15); } }
Παραγωγή:
Όπως προαναφέρθηκε, επιτυγχάνουμε αλυσίδα κατασκευαστή στην ίδια τάξη χρησιμοποιώντας τη λέξη-κλειδί «αυτό». Στο παραπάνω πρόγραμμα, έχουμε τρεις κατασκευαστές και καλούμε έναν κατασκευαστή από τον άλλο χρησιμοποιώντας τη λέξη-κλειδί «αυτό».
Από τη βασική τάξη
Όταν μια τάξη κληρονομεί μια άλλη τάξη τότε ο κατασκευαστής της μητρικής τάξης καλείται πρώτα όταν δημιουργούμε ένα αντικείμενο μιας παραγόμενης κλάσης που είναι κατασκευαστής αλυσίδας.
Αν θέλουμε να καλέσουμε ρητά τον κατασκευαστή βασικής κλάσης στην παράγωγη κλάση, τότε θα πρέπει να χρησιμοποιήσουμε τη λέξη-κλειδί 'super' για το σκοπό αυτό. Χρησιμοποιώντας τη λέξη-κλειδί «σούπερ» μπορούμε να καλέσουμε τους κατασκευαστές superclass στην ιεραρχία κληρονομιάς μέχρι να φτάσουμε στην κορυφαία κατηγορία.
Το παρακάτω πρόγραμμα δείχνει τη χρήση μιας «σούπερ» λέξης-κλειδιού για αλυσίδα κατασκευαστή.
class BaseClass { String name; // no args constructor BaseClass() { this(''); System.out.println('BaseClass::No-argument constructor'); } // Parameterized constructor BaseClass(String name) { this.name = name; System.out.println('BaseClass::Parameterized constructor'); } } class DerivedClass extends BaseClass { // No-argument constructor DerivedClass() { System.out.println('DerivedClass::No-argument constructor'); } // parameterized constructor DerivedClass(String name) { super(name); // invokes Parameterized constructor of BaseClass System.out.println('DerivedClass::Parameterized constructor'); } } class Main { public static void main(String args()) { // invokes DerivedClass parameterized constructor DerivedClass obj = new DerivedClass('Java'); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, καλούμε τον παραμετροποιημένο κατασκευαστή της παραγόμενης κλάσης με την τιμή 'Java'. Αυτός ο κατασκευαστής με τη σειρά του έχει μια κλήση στον κατασκευαστή της βασικής κλάσης χρησιμοποιώντας το 'super (name)' που εκτελεί τον παραμετροποιημένο κατασκευαστή της βασικής κλάσης.
Συχνές Ερωτήσεις
Ε # 1) Πώς δημιουργείτε ένα Κατασκευαστή στην Java;
Απάντηση: Δημιουργούμε έναν κατασκευαστή ως μια ειδική μέθοδο που έχει το ίδιο όνομα με το όνομα της τάξης. Ένας κατασκευαστής δεν μπορεί να έχει επίσης τύπο επιστροφής. Μπορεί να έχει τροποποιητές πρόσβασης, αλλά δεν μπορεί να είναι τελικός, στατικός, αφηρημένος ή συγχρονισμένος.
Εάν το ABC είναι μια τάξη, τότε μπορούμε να ορίσουμε τον κατασκευαστή του ως
ABC(){} //no args constructor OR ABC(param1, param 2, …, param n) {} //parameterized constructor
Q # 2) Ποιο είναι το όφελος ενός Κατασκευαστή στην Java;
Απάντηση: Χρησιμοποιώντας τον κατασκευαστή, μπορούμε να προετοιμάσουμε τα μέλη της τάξης ως το πρώτο πράγμα που δημιουργείται το αντικείμενο στιγμής. Ο κατασκευαστής εξαλείφει την ανάγκη να συνομιλείτε σιωπηρά κανονικές μεθόδους.
Μπορούμε να εκτελέσουμε διάφορες εργασίες που σχετίζονται με την προετοιμασία, την εκκίνηση εργασιών κ.λπ. στον κατασκευαστή καθώς οι κατασκευαστές καλούνται κατά τη φάση δημιουργίας αντικειμένων.
Q # 3) Γιατί χρησιμοποιούνται οι Κατασκευαστές;
Απάντηση: Οι κατασκευαστές χρησιμοποιούνται κυρίως για την προετοιμασία των μελών της τάξης και επικαλούνται όταν δημιουργείται το αντικείμενο της τάξης.
Q # 4) Μπορεί ο Κατασκευαστής να είναι ιδιωτικός;
Απάντηση: Ναι, μπορούμε να έχουμε έναν ιδιωτικό κατασκευαστή. Όταν ο κατασκευαστής είναι ιδιωτικός, τότε το μάθημα μπορεί να αποτραπεί από το να είναι instantiating.
Ε # 5) Μπορεί ο Κατασκευαστής να είναι τελικός;
Απάντηση: Όχι, δεν μπορούμε να έχουμε έναν τελικό κατασκευαστή.
συμπέρασμα
Σε αυτό το σεμινάριο, ξεκινήσαμε τη συζήτησή μας για κατασκευαστές στην Java. Μάθαμε τα βασικά στοιχεία του κατασκευαστή, τη δημιουργία του και τους κανόνες που πρέπει να ακολουθήσουμε. Συζητήσαμε επίσης κατασκευαστές αντιγράφων στην Java.
Ο προεπιλεγμένος κατασκευαστής & τύποι κατασκευαστών και έννοιες όπως υπερφόρτωση κατασκευαστή και αλυσίδα κατασκευαστή ενημερώθηκαν με παραδείγματα. Ως μέρος αυτών των θεμάτων, είδαμε επίσης τη χρήση της λέξης-κλειδιού «αυτού» στους κατασκευαστές.
=> Διαβάστε ολόκληρη τη σειρά Easy Java Training.
Συνιστώμενη ανάγνωση
- Αντικείμενο Java Class Vs - Πώς να χρησιμοποιήσετε την κλάση και το αντικείμενο στην Java
- Βασικά Java: Java Syntax, Java Class και Core Java Concepts
- Java Integer και Java BigInteger Class με παραδείγματα
- Εκπαιδευτικό μάθημα Java Scanner με παραδείγματα
- Εκπαιδευτικό μάθημα Java Array - java.util.Arays Class με παραδείγματα
- Τι είναι το Java Java | Java Vector Class Tutorial με παραδείγματα
- Java Interface και Abstract Class Tutorial με παραδείγματα
- Κατηγορία ρομπότ στο Selenium WebDriver με Java