Ini
Harus selalu ada sesuatu untuk mewakili objek kelas saat ini. Sama seperti penunjuk ini di C ++, kata kunci ini di Java mewakili referensi ke objek saat ini.
Ini memiliki tiga fungsi utama:
1. Hubungi konstruktor lain dalam konstruktor.
Misalnya, ada kelas siswa dengan tiga konstruktor. Jika Anda memanggil konstruktor lain dalam konstruktor tertentu, ini () diperlukan, dan tidak mungkin untuk menggunakan siswa () secara langsung.
2. Kembalikan referensi ke objek saat ini.
3. Bedakan antara nama variabel anggota dan nama parameter.
Lihat contoh berikut:
siswa kelas publik {nama string pribadi; usia int pribadi; perguruan tinggi string pribadi; siswa publik () {usia = 20; } Siswa Publik (nama string) {this (); // tidak dapat menjadi siswa panggilan, hanya menggunakan metode ini (). this.name = name; System.out.println ("Nama siswa ini adalah"+nama); } siswa publik (nama string, string college) {this (name); // c ++ Anda dapat secara langsung memanggil konstruktor lain this.college = college; System.out.println ("Nama siswa ini adalah"+name+"College adalah"+College); } upgrade siswa publik () {usia ++; kembalikan ini; } public void print () {System.out.println ("Nama adalah:"+Nama+"Usia adalah:"+usia+"College adalah:"+College); } public static void main (string [] args) {student student1 = baru siswa ("linc"); Siswa Siswa2 = Siswa Baru ("Linc", "Shenyang College"); student2.upgrade (). print (); }}Saat Anda tersesat di lautan benda yang luas, jangan lupa menggunakan ini untuk menemukan diri Anda.
super
Super adalah ayah ini. Dari perspektif objek wajah, kedua konsep ini mudah dimengerti.
Subkelas diwarisi dari kelas induk. Sifat dan metode yang dilindungi dan di atas dari kelas induk dilahirkan dengan secara bawaan di subkelas. Jadi, mengapa Anda masih membutuhkan kata kunci super?
Pertama, lihat konstruksi kelas induk. Saat membangun subkelas, Anda harus terlebih dahulu memanggil konstruktor default dari kelas induk, yang konsisten dengan sifat konstruksi C ++. Ketika kelas induk memiliki banyak konstruktor, Anda perlu menentukan yang mana yang akan dihubungi. Ini membutuhkan super (arg1, arg2 ...).
Perlu dicatat bahwa ketika memanggil konstruktor kelas dasar dalam konstruktor subkelas, Super harus ditulis sebagai yang pertama, jika tidak kesalahan akan dilaporkan.
Kedua, panggil metode kelas induk ini dalam beberapa metode yang menimpa kelas induk. Seperti yang kita semua ketahui, beberapa metode impliting kelas orang tua dalam subclass adalah cara untuk berorientasi polimorfisme dalam berorientasi objek, dan untuk berbagai alasan lain, metode kelas induk ini perlu dipanggil dalam metode ini untuk dibedakan. Pada saat ini, Super perlu digunakan untuk menyelesaikannya.
kelas publik Classleader memperluas siswa {swasta pribadi; public classleader () {Duty = "class monitor"; } public classleader (string duty, string name, string college) {super (name, college); this.duty = tugas; } public void print () {super.print (); System.out.println ("Duty Is" + Duty); } public static void main (string [] args) {classleader leader = new classleader ("life", "linc", "shenyang"); leader.print (); }}Tempatkan dua file kelas di direktori yang sama, kompilasi dan jalankan:
D:/Workspace/Java/Project261/Super> Java -D. *Java D:/Workspace/Java/Project261/Super> Java Classleader
Hasil Menjalankan:
Nama siswa ini adalah linc nama siswa ini adalah linc college adalah nama shenyang adalah: linc usia adalah: 20 kuliah adalah: shenyang duty is life
Lihat bagaimana ditangani dalam bahasa lain:
C# menyediakan kata kunci dasar untuk menyelesaikan fungsi yang mirip dengan Super, dan C ++ secara langsung memanggilnya dengan nama kelas dasar.