Kata pengantar
Kode statis lebih diutamakan daripada kode non-statis karena anggota yang dimodifikasi oleh statis adalah semua anggota kelas dan akan dieksekusi saat JVM memuat kelas. Anggota yang tidak dimodifikasi oleh statis juga disebut anggota instance. Objek harus dibuat sebelum dapat dimuat ke dalam heap memori. Oleh karena itu, statis akan lebih disukai untuk non-statis.
Saat mengeksekusi konstruktor (metode konstruksi), ada tiga langkah implisit sebelum menjalankan badan metode:
1. Pernyataan super mungkin memiliki tiga situasi berikut:
1) Baris pertama konstruktor adalah pernyataan ini, dan tiga langkah implisit tidak akan dieksekusi.
2) Baris pertama dari badan konstruktor adalah pernyataan super, dan konstruktor kelas induk yang sesuai dipanggil.
3) baris pertama dari badan konstruktor bukanlah pernyataan ini atau pernyataan super, dan super () disebut secara implisit, yaitu konstruktor default kelas induknya, itulah sebabnya kelas induk biasanya perlu menyediakan konstruktor default;
2. Inisialisasi variabel non-statis;
3. Bangun blok kode.
Dari sini kita dapat melihat bahwa blok kode konstruksi diutamakan daripada badan metode metode konstruksi, tetapi kata kunci ini dan kata kunci super tidak dapat muncul pada saat yang sama, dan hanya dapat berada di baris pertama kode. Jika kata kunci ini muncul, tiga langkah implisit tidak akan dieksekusi.
Pertama -tama lihat kelas -kelas berikut dan kemudian menilai output mereka:
kelas publik A {static {System.out.print (1); } public a () {System.out.print (2); }} Public Class B memperluas A {static {System.out.print ("a"); } public b () {System.out.print ("b"); }} kelas publik c {public static void main (string [] args) {a = new b (); a = b () baru; }} Urutan eksekusi kelas orang tua dan kelas anak
Karakteristik eksekusi variabel statis
Catatan tentang Metode Override
1. Ketika kelas orang tua dan anak memiliki blok kode statis dan konstruktor, urutan eksekusi adalah sebagai berikut:
Blok Kode Statis Kelas Induk> Blok Kode Statis Subclass
Konstruktor Kelas Induk> Konstruktor Subkelas (Pertama ada seorang ayah, lalu ada seorang anak)
Jika itu adalah hubungan warisan multi-level, kelas induk di level tertinggi akan dieksekusi terlebih dahulu, dan kemudian dikurangi pada gilirannya.
Ringkasan: Eksekusi statis lebih disukai, eksekusi kelas induk lebih disukai
Catatan: Blok kode statis dijalankan ketika JVM memuat kelas, dan blok kode statis hanya dieksekusi sekali.
2. Saat memanggil metode di kelas, sebelum menjalankan Badan Metode, variabel anggota di kelas harus ditetapkan terlebih dahulu. Jika tidak ada nilai spesifik yang ditetapkan dalam kode, ada juga nilai default. Urutan penugasan variabel anggota dilakukan dalam urutan sebelum dan sesudah.
Jika ada penugasan langsung dan penugasan konstruktor, maka jalankan secara berurutan
3. Override (override) Overload (kelebihan muatan)
Overloading adalah nama metode, tipe pengembalian sama, satu -satunya perbedaan adalah bahwa parameter metode berbeda (tipe parameter yang berbeda, atau tipe parameter yang berbeda)
Menulis kembali:
Polimorfisme:
Referensi kelas induk menunjuk ke objek subkelas. Metode yang dieksekusi ketika dipanggil juga merupakan metode subclass. Metode kelas induk tidak akan dieksekusi.
Apa yang disebut polimorfisme berarti bahwa referensi kelas induk atau tipe antarmuka dapat menunjuk ke subkelas atau instance (objek) kelas yang mengimplementasikan antarmuka.
Setelah membaca instruksi di atas, Anda juga harus mengetahui hasil output dari program di atas.
Hasil output adalah: 1A2B2B
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.