Βασική διαφορά – αυτό έναντι σούπερ στην Java
Οι λέξεις-κλειδιά «αυτό» και «σούπερ» χρησιμοποιούνται στον προγραμματισμό Java. Αυτές οι λέξεις-κλειδιά δεν μπορούν να χρησιμοποιηθούν ως μεταβλητές ή οποιοδήποτε άλλο όνομα αναγνωριστικού. Η Java υποστηρίζει αντικειμενοστραφή προγραμματισμό (OOP). Το πρόγραμμα ή το λογισμικό μπορεί να μοντελοποιηθεί χρησιμοποιώντας αντικείμενα. Τα αντικείμενα είναι κουρασμένα χρησιμοποιώντας κλάσεις. Ένας πυλώνας του OOP είναι η κληρονομικότητα. Παρέχει δυνατότητα επαναχρησιμοποίησης κώδικα. Οι κλάσεις που ήδη υπάρχουν είναι υπερκλάσεις και οι παραγόμενες κλάσεις είναι υποκλάσεις. Η λέξη-κλειδί super μπορεί να χρησιμοποιηθεί για να παραπέμψει ένα αντικείμενο της υπερκλάσης. Υπάρχουν πολλά αντικείμενα στο σύστημα. Η λέξη-κλειδί «αυτό» χρησιμοποιείται για την αναφορά ενός τρέχοντος αντικειμένου. Η βασική διαφορά μεταξύ αυτού και του super είναι ότι το "αυτό" είναι μια μεταβλητή αναφοράς που χρησιμοποιείται για την αναφορά του τρέχοντος αντικειμένου ενώ το "super" είναι μια μεταβλητή αναφοράς που χρησιμοποιείται για την αναφορά άμεσου αντικειμένου υπερκλάσης.
Τι είναι αυτό στην Java;
Η λέξη-κλειδί "αυτό" χρησιμοποιείται για την αναφορά ενός τρέχοντος αντικειμένου. Ανατρέξτε στο δεδομένο πρόγραμμα Java.
Εικόνα 01: Πρόγραμμα Java που χρησιμοποιεί αυτήν τη λέξη-κλειδί
Στην Java, υπάρχουν τρεις τύποι μεταβλητών. Είναι μεταβλητές παράδειγμα, τοπικές μεταβλητές και μεταβλητές κλάσης. Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Employee έχει δύο μεταβλητές παρουσίας. Είναι ταυτότητα και όνομα. Τοπικές μεταβλητές είναι οι μεταβλητές που ανήκουν σε μεθόδους. Οι μεταβλητές κλάσης μοιράζονται όλα τα αντικείμενα. Το αναγνωριστικό και το όνομα διαβιβάζονται στον κατασκευαστή Employee. Αν ο προγραμματιστής γράψει id=id; δεν θα αρχικοποιήσει τις μεταβλητές παρουσίας επειδή ο Κατασκευαστής έχει ήδη αναγνωριστικό και όνομα. Δεν υπάρχουν τιμές για παράδειγμα μεταβλητές. Έτσι, η εκτύπωσή τους θα εμφανίσει null. Όταν χρησιμοποιείται αυτό, αναφέρεται στο τρέχον αντικείμενο. Επομένως, δίνοντας id και όνομα στον κατασκευαστή μπορεί να οριστούν οι μεταβλητές instance.
Η λέξη-κλειδί «αυτό» μπορεί να χρησιμοποιηθεί για την επίκληση της τρέχουσας μεθόδου κλάσης. Ανατρέξτε στο συγκεκριμένο πρόγραμμα java.
δημόσια τάξη ThisDemo{
public static void main(String args){
Myclass myClass=νέο Myclass();
myClass. B();
}
}
class Myclass{
public void A(){
System.out.println("A");
}
public void B(){
System.out.prinltn("B");
this. A();
}
}
Η κλάση Myclass περιέχει δύο μεθόδους. Είναι οι μέθοδοι Α και Β. Κατά τη δημιουργία ενός αντικειμένου του Myclass και την επίκληση της μεθόδου Β θα εκτυπώσει τα Β, Α ως έξοδο. Στη μέθοδο Β, μετά την εκτύπωση Β υπάρχει μια δήλωση ως this. A(). Χρησιμοποιώντας αυτό, χρησιμοποιήθηκε η τρέχουσα μέθοδος κλάσης.
Είναι επίσης δυνατό να χρησιμοποιήσετε αυτήν τη λέξη-κλειδί για να καλέσετε τον κατασκευαστή της τρέχουσας κλάσης. Ανατρέξτε στο δεδομένο πρόγραμμα.
δημόσια τάξη ThisDemo{
public static void main(String args){
A obj=νέο A(5);
}
}
τάξη Α{
δημόσια Α(){
System.out.println("Constructor A");
}
δημόσιο A(int x){
this();
System.out.println("Παραμετροποιημένος κατασκευαστής A");
}
}
Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Α έχει έναν προεπιλεγμένο κατασκευαστή και έναν παραμετροποιημένο κατασκευαστή. Όταν δημιουργείται ένα αντικείμενο του Α, καλείται ο παραμετροποιημένος κατασκευαστής. Στον παραμετροποιημένο κατασκευαστή, υπάρχει μια δήλωση όπως αυτή(); Θα καλέσει τον κατασκευαστή της τρέχουσας κλάσης που είναι A().
Τι είναι το super στην Java;
Η λέξη-κλειδί "super" σχετίζεται με την κληρονομικότητα. Η κληρονομικότητα είναι μια σημαντική έννοια του Αντικειμενοστρεφούς Προγραμματισμού. Επιτρέπει τη χρήση των ιδιοτήτων και των μεθόδων της ήδη υπάρχουσας κλάσης σε μια νέα κλάση. Η ήδη υπάρχουσα κλάση είναι γνωστή ως γονική κλάση ή υπερκλάση. Η νέα τάξη είναι γνωστή ως θυγατρική τάξη ή υποκλάση.
Η «super» είναι μια μεταβλητή αναφοράς που χρησιμοποιείται για να παραπέμψει το αντικείμενο της άμεσης γονικής κλάσης. Η λέξη-κλειδί σούπερ μπορεί να αναφέρεται στη μεταβλητή στιγμιότυπου άμεσης γονικής κλάσης ή να επικαλείται τη μέθοδο κλάσης άμεσης γονέα. Η super() χρησιμοποιείται για την κλήση του κατασκευαστή άμεσης γονικής κλάσης.
Υποθέστε ότι υπάρχουν δύο κλάσεις ως Α και Β. Η κλάση Α είναι η υπερκλάση και η κλάση Β είναι η υποκλάση. Η κατηγορία Α, Β και οι δύο έχουν μέθοδο εμφάνισης.
δημόσια τάξη Α{
public void display(){
System.out.println("A");
}
}
δημόσια τάξη Β επεκτείνεται Α{
public void display(){
System.out.println("B");
}
}
Όταν δημιουργείτε ένα αντικείμενο τύπου Β και καλείτε την εμφάνιση της μεθόδου, θα δώσει την έξοδο Β. Η κλάση Α έχει τη μέθοδο εμφάνισης, αλλά παρακάμπτεται από τη μέθοδο εμφάνισης της υποκλάσης Β. Εάν ο προγραμματιστής θέλει να καλέσει τη μέθοδο εμφάνισης στην κλάση Α, τότε μπορεί να χρησιμοποιήσει τη λέξη-κλειδί σούπερ. Ανατρέξτε στο δεδομένο πρόγραμμα Java.
Εικόνα 02: Πρόγραμμα Java που χρησιμοποιεί υπερ-κλειδί
Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Α έχει μια μεταβλητή με όνομα αριθμό με τιμή 10. Η κλάση Β επεκτείνει την Α και έχει μια μεταβλητή με όνομα αριθμό με τιμή 20. Γενικά, όταν δημιουργείτε ένα αντικείμενο τύπου Β και καλείτε τη μέθοδο εμφάνισης θα πρέπει να δώσει τον αριθμό στην υποκλάση επειδή η τιμή υπερκλάσης παρακάμπτεται από τη νέα κλάση. Χρησιμοποιώντας το super.num, εκτυπώνεται η τιμή του αριθμού υπερκλάσης.
Η super() μπορεί να χρησιμοποιηθεί για την κλήση του κατασκευαστή superclass. Ανατρέξτε στο παρακάτω πρόγραμμα.
δημόσια τάξη Κύρια {
public static void main(String args){
B obj=νέο B();
}
}
τάξη Α{
A(){
System.out.println("A");
}
}
κλάση Β επεκτείνεται Α{
B(){
super();
System.out.println("B");
}
}
Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Α έχει έναν κατασκευαστή Α (). Η κλάση Β έχει τον κατασκευαστή Β (). Η κλάση Β επεκτείνει την κλάση Α. Όταν δημιουργείτε ένα αντικείμενο τύπου Β, θα εκτυπώσει τα Α, Β ως έξοδο. Ο κατασκευαστής B () έχει super (). Επομένως, πρώτα καλείται ο κατασκευαστής Α και μετά πηγαίνει στο Β. Παρόλο που το super () δεν είναι γραμμένο, από προεπιλογή καλείται ο γονικός κατασκευαστής.
Το σούπερ χρησιμοποιώντας τη μέθοδο είναι το εξής.
Εικόνα 03: Πρόγραμμα Java που καλεί τη μέθοδο superclass
Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Α έχει μέθοδο εμφάνισης. Η κατηγορία Β έχει επίσης μέθοδο εμφάνισης. Η κλάση Β επεκτείνει το Α. Κατά τη δημιουργία ενός αντικειμένου τύπου Β και την κλήση της μεθόδου εμφάνισης θα δώσει έξοδο ως Α και Β. Στη μέθοδο εμφάνισης κλάσης Β, η μέθοδος εμφάνισης κλάσης Α καλείται χρησιμοποιώντας super.display(). Αυτή η μέθοδος εκτυπώνει πρώτα το "A". Στη συνέχεια εκτυπώνει το "B".
Ποια είναι η ομοιότητα μεταξύ αυτού και του σούπερ;
Και οι δύο είναι λέξεις-κλειδιά στον προγραμματισμό Java
Ποια είναι η διαφορά μεταξύ αυτού και του σούπερ;
Αυτό εναντίον Super |
|
Η "αυτό" είναι μια μεταβλητή αναφοράς που χρησιμοποιείται για την αναφορά του τρέχοντος αντικειμένου. | Η «super» είναι μια μεταβλητή αναφοράς που χρησιμοποιείται για να παραπέμψει ένα αντικείμενο άμεσης υπερκλάσης. |
Μεταβλητή παρουσίας | |
Μπορεί να παραπεμφθεί μια τρέχουσα μεταβλητή παρουσίας κλάσης χρησιμοποιώντας αυτό. | Μεταβλητή παρουσίας Superclass μπορεί να παραπεμφθεί χρησιμοποιώντας super. |
Μέθοδος τάξης | |
Η τρέχουσα μέθοδος κλάσης μπορεί να κληθεί χρησιμοποιώντας αυτό. | Η μέθοδος Superclass μπορεί να κληθεί με χρήση super. |
Κατασκευαστής | |
Ο κατασκευαστής τρέχουσας κλάσης μπορεί να κληθεί χρησιμοποιώντας αυτήν την(). | Ο κατασκευαστής Superclass μπορεί να κληθεί χρησιμοποιώντας super(). |
Σύνοψη – αυτό εναντίον σούπερ στην Java
Οι λέξεις-κλειδιά «αυτό» και «σούπερ» χρησιμοποιούνται στην Java. Οι λέξεις-κλειδιά δεν μπορούν να χρησιμοποιηθούν ως μεταβλητές ή οποιοδήποτε άλλο όνομα αναγνωριστικού. Μοιάζουν να είναι ίδιοι, αλλά έχουν μια διαφορά. Η διαφορά μεταξύ αυτού και του super είναι ότι το super είναι μια μεταβλητή αναφοράς που χρησιμοποιείται για την αναφορά άμεσου αντικειμένου superclass ενώ αυτή είναι μια μεταβλητή αναφοράς που αναφέρεται στο τρέχον αντικείμενο.
Κατεβάστε το PDF αυτού του vs super σε Java
Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Κατεβάστε την έκδοση PDF εδώ: Διαφορά μεταξύ αυτού και του σούπερ στην Java