java this keyword tutorial with code examples
Αυτό το σεμινάριο εξηγεί μια ειδική λέξη-κλειδί «αυτό» στην Java με λεπτομέρειες με απλά παραδείγματα κώδικα. Καλύπτει πώς, πότε και πού να χρησιμοποιήσετε τη λέξη-κλειδί «αυτό»:
Σε αυτό το σεμινάριο, παρουσιάσαμε μία από τις σημαντικές έννοιες στην Java - τη λέξη-κλειδί «αυτό». Θα διερευνήσουμε τις λεπτομέρειες αυτής της λέξης-κλειδιού και θα παρουσιάσουμε επίσης μερικά παραδείγματα της χρήσης της στην Java.
Η λέξη-κλειδί 'αυτό' στην Java είναι μια μεταβλητή αναφοράς. Η μεταβλητή αναφοράς 'αυτό' δείχνει το τρέχον αντικείμενο στο πρόγραμμα Java . Επομένως, εάν θέλετε να αποκτήσετε πρόσβαση σε οποιοδήποτε μέλος ή λειτουργία του τρέχοντος αντικειμένου, μπορείτε να το κάνετε χρησιμοποιώντας την αναφορά «αυτό».
Τι θα μάθετε:
- Java «Αυτό» Εισαγωγή
- Πότε να χρησιμοποιήσετε «αυτό» στην Java;
- Πρόσβαση στη μεταβλητή παρουσίας χρησιμοποιώντας 'αυτό'
- «Αυτό» πέρασε ως παράμετρος μεθόδου
- Επικαλέστε την τρέχουσα μέθοδο τάξης με «αυτό»
- Επιστροφή με 'αυτό'
- Χρησιμοποιώντας «αυτό» για να επικαλεστεί τον τρέχοντα κατασκευαστή τάξης
- Χρησιμοποιώντας «αυτό» ως το επιχείρημα στον κατασκευαστή
- Συχνές Ερωτήσεις
- συμπέρασμα
Java «Αυτό» Εισαγωγή
Η αναφορά «αυτό» ονομάζεται γενικά ως «αυτός ο δείκτης» καθώς δείχνει το τρέχον αντικείμενο. Ο «αυτός ο δείκτης» είναι χρήσιμος όταν υπάρχει κάποιο όνομα για τα χαρακτηριστικά και τις παραμέτρους της κλάσης. Όταν προκύπτει μια τέτοια κατάσταση, ο «αυτός ο δείκτης» εξαλείφει τη σύγχυση καθώς μπορούμε να έχουμε πρόσβαση σε παραμέτρους χρησιμοποιώντας το «αυτό» δείκτη.
Σε αυτό το σεμινάριο, θα συζητήσουμε τη χρήση του δείκτη «αυτό» σε διάφορες καταστάσεις μαζί με παραδείγματα.
Πότε να χρησιμοποιήσετε «αυτό» στην Java;
Στην Java ο όρος «αυτό» έχει τις ακόλουθες χρήσεις:
- Η αναφορά «αυτό» χρησιμοποιείται για πρόσβαση στη μεταβλητή παρουσίας τάξης.
- Μπορείτε ακόμη και να μεταβιβάσετε 'αυτό' ως επιχείρημα στην κλήση μεθόδου.
- «Αυτό» μπορεί επίσης να χρησιμοποιηθεί για να επικαλεστεί έμμεσα την τρέχουσα μέθοδο κλάσης.
- Εάν θέλετε να επιστρέψετε το τρέχον αντικείμενο από τη μέθοδο, χρησιμοποιήστε το 'αυτό'.
- Εάν θέλετε να επικαλεστείτε τον τρέχοντα κατασκευαστή τάξης, μπορείτε να χρησιμοποιήσετε το 'αυτό'.
- Ο κατασκευαστής μπορεί επίσης να έχει «αυτό» ως επιχείρημα.
Ας εξετάσουμε τώρα καθεμία από αυτές τις χρήσεις ξεχωριστά.
Πρόσβαση στη μεταβλητή παρουσίας χρησιμοποιώντας 'αυτό'
Οι μεταβλητές παρουσίας των παραμέτρων κλάσης και μεθόδου μπορεί να έχουν το ίδιο όνομα. Ο δείκτης «αυτό» μπορεί να χρησιμοποιηθεί για την άρση της ασάφειας που προκύπτει από αυτό.
Το παρακάτω πρόγραμμα Java δείχνει πώς μπορεί να χρησιμοποιηθεί «αυτό» για πρόσβαση σε μεταβλητές παρουσίας.
class this_Test { int val1; int val2; // Parameterized constructor this_Test(int val1, int val2) { this.val1 = val1 + val1; this.val2 = val2 + val2; } void display() { System.out.println('Value val1 = ' + val1 + ' Value val2 = ' + val2); } } class Main{ public static void main(String() args) { this_Test object = new this_Test(5,10); object.display(); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, μπορείτε να δείτε ότι οι μεταβλητές παρουσίας και οι παράμετροι μεθόδου έχουν τα ίδια ονόματα. Χρησιμοποιούμε το δείκτη «αυτό» με μεταβλητές παρουσίας για τη διάκριση μεταξύ των μεταβλητών παρουσίας και των παραμέτρων μεθόδου.
«Αυτό» πέρασε ως παράμετρος μεθόδου
Μπορείτε επίσης να μεταβιβάσετε αυτόν το δείκτη ως παράμετρο μεθόδου. Η παράδοση αυτού του δείκτη ως παράμετρος μεθόδου απαιτείται συνήθως όταν αντιμετωπίζετε συμβάντα. Για παράδειγμα, ας υποθέσουμε ότι θέλετε να ενεργοποιήσετε κάποιο συμβάν στο τρέχον αντικείμενο / λαβή και, στη συνέχεια, πρέπει να το ενεργοποιήσετε χρησιμοποιώντας αυτόν τον δείκτη.
Δίνεται παρακάτω ένα έκθεμα προγραμματισμού στο οποίο έχουμε περάσει αυτόν τον δείκτη στη μέθοδο.
class Test_method { int val1; int val2; Test_method() { val1 = 10; val2 = 20; } void printVal(Test_method obj) { System.out.println('val1 = ' + obj.val1 + ' val2 = ' + obj.val2); } void get() { printVal(this); } } class Main{ public static void main(String() args) { Test_method object = new Test_method(); object.get(); } }
Παραγωγή:
Σε αυτό το πρόγραμμα, δημιουργούμε ένα αντικείμενο της κλάσης Test_method στην κύρια συνάρτηση και στη συνέχεια καλέστε get () με αυτό το αντικείμενο. Μέσα στη μέθοδο get (), ο δείκτης «αυτό» μεταφέρεται στη μέθοδο printVal () που εμφανίζει τις τρέχουσες μεταβλητές παρουσίας.
Επικαλέστε την τρέχουσα μέθοδο τάξης με «αυτό»
Ακριβώς όπως μπορείτε να μεταβιβάσετε το δείκτη «αυτό» στη μέθοδο, μπορείτε επίσης να χρησιμοποιήσετε αυτόν το δείκτη για να καλέσετε μια μέθοδο. Εάν ξεχάσετε να συμπεριλάβετε αυτόν τον δείκτη ενώ ζητάτε τη μέθοδο της τρέχουσας τάξης, τότε ο μεταγλωττιστής τον προσθέτει για εσάς.
Παρακάτω παρατίθεται ένα παράδειγμα επίκλησης της μεθόδου της τάξης με «αυτό».
class Test_this { void print() { // calling fuctionshow() this.show(); System.out.println('Test_this:: print'); } void show() { System.out.println('Test_this::show'); } } class Main{ public static void main(String args()) { Test_this t1 = new Test_this(); t1.print(); } }
Παραγωγή:
Σε αυτό το πρόγραμμα, η μέθοδος class class print () καλεί τη μέθοδο show () χρησιμοποιώντας αυτόν τον δείκτη όταν καλείται από το αντικείμενο κλάσης στην κύρια λειτουργία.
Επιστροφή με 'αυτό'
Εάν ο τύπος επιστροφής της μεθόδου είναι το αντικείμενο της τρέχουσας κλάσης, τότε μπορείτε εύκολα να επιστρέψετε το δείκτη «αυτό». Με άλλα λόγια, μπορείτε να επιστρέψετε το τρέχον αντικείμενο από μια μέθοδο χρησιμοποιώντας το δείκτη «αυτό».
Δίνεται παρακάτω η υλοποίηση της επιστροφής ενός αντικειμένου χρησιμοποιώντας το δείκτη «αυτό».
μετατροπέας youtube σε mp4 υψηλής ποιότητας
class Test_this { int val_a; int val_b; //Default constructor Test_this() { val_a = 10; val_b = 20; } Test_this get() { return this; } void display() { System.out.println('val_a = ' + val_a + ' val_b = ' + val_b); } } class Main{ public static void main(String() args) { Test_this object = new Test_this(); object.get().display(); } }
Παραγωγή:
Το παραπάνω πρόγραμμα δείχνει τη μέθοδο get () που επιστρέφει αυτό που είναι αντικείμενο της κλάσης Test_this. Χρησιμοποιώντας το τρέχον αντικείμενο που επιστρέφεται από τη μέθοδο get (), η οθόνη της μεθόδου καλείται με τη σειρά.
Χρησιμοποιώντας «αυτό» για να επικαλεστεί τον τρέχοντα κατασκευαστή τάξης
Μπορείτε επίσης να χρησιμοποιήσετε το δείκτη 'αυτό' για να καλέσετε τον κατασκευαστή των τρεχόντων κλάσεων. Η βασική ιδέα είναι η επαναχρησιμοποίηση του κατασκευαστή. Και πάλι εάν έχετε περισσότερους από έναν κατασκευαστές στην τάξη σας, τότε μπορείτε να καλέσετε αυτούς τους κατασκευαστές ο ένας από τον άλλο με αποτέλεσμα την αλυσίδα κατασκευαστή.
Εξετάστε το ακόλουθο πρόγραμμα Java.
class This_construct { int val1; int val2; //Default constructor This_construct() { this(10, 20); System.out.println('Default constructor
'); } //Parameterized constructor This_construct(int val1, int val2) { this.val1 = val1; this.val2 = val2; System.out.println('Parameterized constructor'); } } class Main{ public static void main(String() args) { This_construct object = new This_construct(); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, έχουμε δύο κατασκευαστές στην τάξη. Καλούμε τον άλλο κατασκευαστή χρησιμοποιώντας το δείκτη «αυτό», από τον προεπιλεγμένο κατασκευαστή της κλάσης.
Χρησιμοποιώντας «αυτό» ως το επιχείρημα στον κατασκευαστή
Μπορείτε επίσης να μεταβιβάσετε το δείκτη «αυτό» ως επιχείρημα σε έναν κατασκευαστή. Αυτό είναι πιο χρήσιμο όταν έχετε πολλές κατηγορίες όπως φαίνεται στην ακόλουθη εφαρμογή.
class Static_A { Static_B obj; Static_A(Static_B obj) { this.obj = obj; obj.display(); } } class Static_B { int x = 10; Static_B() { Static_A obj = new Static_A(this); } void display() { System.out.println('B::x = ' + x); } } class Main{ public static void main(String() args) { Static_B obj = new Static_B(); } }
Παραγωγή:
Όπως φαίνεται στην παραπάνω εφαρμογή, έχουμε δύο τάξεις και κάθε κατασκευαστής κλάσης καλεί τον κατασκευαστή της άλλης τάξης. Ο δείκτης «αυτό» χρησιμοποιείται για το σκοπό αυτό.
Συχνές Ερωτήσεις
Q # 1) Ποια είναι η διαφορά μεταξύ αυτού και αυτού () στην Java;
Απάντηση: Στην Java, αυτό αναφέρεται στο τρέχον αντικείμενο ενώ αυτό () αναφέρεται στον κατασκευαστή με αντίστοιχες παραμέτρους. Η λέξη-κλειδί «αυτό» λειτουργεί μόνο με αντικείμενα. Η κλήση 'this ()' χρησιμοποιείται για την κλήση περισσότερων του ενός κατασκευαστών από την ίδια τάξη.
Ε # 2) Είναι απαραίτητη αυτή η λέξη-κλειδί στην Java;
Απάντηση: Είναι απαραίτητο ειδικά όταν πρέπει να περάσετε το τρέχον αντικείμενο από τη μια μέθοδο στην άλλη, ή μεταξύ των κατασκευαστών ή απλά να χρησιμοποιήσετε το τρέχον αντικείμενο για άλλες λειτουργίες.
Q # 3) Ποια είναι η διαφορά μεταξύ αυτού () και super () στην Java;
Απάντηση: Τόσο αυτό () όσο και το super () είναι λέξεις-κλειδιά στην Java. Ενώ αυτό () αντιπροσωπεύει τον κατασκευαστή του τρέχοντος αντικειμένου με αντίστοιχες παραμέτρους, το super () αντιπροσωπεύει τον κατασκευαστή της γονικής κλάσης.
Q # 4) Μπορείτε να χρησιμοποιήσετε τόσο αυτό () όσο και το super () σε κατασκευαστή;
Απάντηση: Ναι, μπορείτε να το χρησιμοποιήσετε. Ο κατασκευαστής αυτό () θα δείξει στον τρέχοντα κατασκευαστή ενώ ο σούπερ () θα δείξει στον γονικό κατασκευαστή κλάσης. Να θυμάστε ότι τόσο αυτό () όσο και το super () πρέπει να είναι η πρώτη δήλωση.
συμπέρασμα
Η λέξη-κλειδί «αυτό» είναι μια αναφορά στο τρέχον αντικείμενο στο πρόγραμμα Java. Μπορεί να χρησιμοποιηθεί για την αποφυγή σύγχυσης που προκύπτει από τα ίδια ονόματα για μεταβλητές κλάσης (μεταβλητές παρουσίας) και παραμέτρους μεθόδου.
Μπορείτε να χρησιμοποιήσετε το δείκτη 'αυτό' με πολλούς τρόπους, όπως πρόσβαση σε μεταβλητές παρουσίας, μεταβίβαση ορισμάτων σε μέθοδο ή κατασκευαστή, επιστροφή του αντικειμένου κ.λπ. Ο δείκτης 'αυτό' είναι μια σημαντική λέξη-κλειδί στην Java και είναι ένα χρήσιμο χαρακτηριστικό για την πρόσβαση στο τρέχον αντικείμενο και τα μέλη και τις λειτουργίες του.
Ελπίζουμε να παρακολουθήσατε τη χρήση της λέξης-κλειδιού «αυτό» στο Java από αυτό το σεμινάριο.
Συνιστώμενη ανάγνωση
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Εκμάθηση Java Reflection με παραδείγματα
- C # Εκπαιδευτικός χειρισμός εξαίρεσης με παραδείγματα κώδικα
- Εκμάθηση Python DateTime με παραδείγματα
- C # Λειτουργίες / Μέθοδοι Εκμάθηση με παραδείγματα κώδικα
- Εκμάθηση Java SWING: Container, Components and Event Handling
- Εκμάθηση Java Συλλογές Πλαίσιο (JCF)
- Java Interface και Abstract Class Tutorial με παραδείγματα