(1) Final: pengubah (kata kunci). Jika suatu kelas dinyatakan final, itu berarti tidak dapat memperoleh subkelas baru dan tidak dapat diwarisi sebagai kelas induk. Oleh karena itu, kelas tidak dapat dinyatakan baik abstrak dan final. Mendeklarasikan variabel atau metode sebagai final dapat memastikan bahwa mereka tidak diubah selama penggunaan. Variabel yang dinyatakan sebagai final harus memiliki nilai awal ketika dinyatakan, dan hanya dapat dibaca di referensi mendatang dan tidak dapat dimodifikasi. Metode yang dinyatakan sebagai final juga hanya dapat digunakan dan tidak dapat kelebihan beban.
(2) Akhirnya: Menyediakan blok akhirnya untuk melakukan operasi kliring selama penanganan pengecualian. Jika pengecualian dilemparkan, klausa tangkapan yang cocok akan dieksekusi, dan kontrol akan memasuki blok akhirnya (jika ada).
(3) Finalisasi: Nama metode. Teknologi Java memungkinkan penggunaan metode finalisasi () untuk melakukan pembersihan yang diperlukan sebelum pengumpul sampah membersihkan objek dari memori. Metode ini disebut oleh pengumpul sampah ketika menentukan bahwa objek tidak dirujuk. Ini didefinisikan dalam kelas objek, jadi semua kelas mewarisi itu. Subclass mengesampingkan metode finalisasi () untuk mengatur sumber daya sistem atau melakukan pekerjaan pembersihan lainnya. Metode finalisasi () dipanggil pada objek sebelum pengumpul sampah menghapusnya.
Di atas mungkin sedikit kabur, mari kita bahas lebih mendalam
1. Properti yang berbeda
(1) Final adalah kata kunci;
(2) finalisasi () adalah metode;
(3) Akhirnya adalah bendera blok, digunakan dalam pernyataan coba;
Kedua, fungsi
(1) Final adalah kata kunci yang digunakan untuk mengidentifikasi konstanta, dan kata kunci yang diidentifikasi oleh final disimpan di kumpulan konstan (penggunaan spesifik konstanta akhir akan diperkenalkan di bawah);
(2) Metode finalisasi () didefinisikan dalam objek. Ini digunakan untuk memanggil JVM untuk mengumpulkan objek ketika objek "menghilang", mirip dengan destruktor di C ++; Ketika ditentukan pengguna, digunakan untuk melepaskan sumber daya yang ditempati oleh objek (seperti melakukan operasi I/0);
(3) Akhirnya {} digunakan untuk mengidentifikasi blok kode dan bekerja sama dengan coba {}. Terlepas dari apakah kode dalam percobaan telah dieksekusi atau tidak (di sini mengacu pada pengecualian), program dalam blok kode pasti akan dilakukan;
3. Penjelasan terperinci
1 Tentukan variabel
1.1 Ketika akhir mendefinisikan variabel tipe dasar, inisialisasi variabel harus diperlukan untuk digunakan di tempat lain saat mendeklarasikan atau di konstruktor. Konstanta yang ditentukan oleh kata kunci ini tidak dapat diubah kecuali untuk tahap inisialisasi.
1.2 Final mendefinisikan referensi ke suatu objek, dan inisialisasi referensi konsisten dengan persyaratan saat mendefinisikan konstanta; Konten objek yang ditentukan oleh kata kunci dapat diubah, tetapi alamat yang ditunjukkan oleh referensi tidak dapat diubah;
2 Tentukan parameter
Jika variabel yang ditentukan oleh parameter ini diteruskan ke, metode tidak dapat memodifikasi konten parameter (kesalahan), yang sama dengan aturan modifikasi untuk mendefinisikan variabel; Metode Java melewati nilai saat melewati tipe dasar dalam metode Java, dan metode Java melewati parameter untuk objek; <Lagipula, metode ini melewati metode di Java tergantung pada melewati "salinan": untuk tipe dasar, pertama -tama buat salinan, tetapkan nilai yang dilewati untuk disalin, dan kemudian beroperasi pada salinan; Untuk jenis objek, pertama -tama buat salinan referensi, dan tetapkan referensi objek yang diteruskan untuk menyalin>
Misalnya: metode (uji int akhir);
Beberapa buku mengatakan bahwa parameter definisi akhir di sini, terutama parameter objek, sangat berguna dan tidak dapat mengubah konten objek dalam metode. Pernyataan ini salah! Ternyata saya juga berpikir bahwa ada beberapa karakteristik pemrograman fungsional dengan cara ini. Anda tidak dapat memodifikasi konten objek. Di sini Anda masih dapat memodifikasi konten objek.
? ? Apa gunanya mendefinisikan parameter ini? ?
String lahir untuk menjadi final!
3 Metode Definisi
(1) metode yang didefinisikan menggunakan kata kunci akhir tidak dapat diwarisi oleh subkelas;
(2) Izinkan kompiler untuk mengonversi semua panggilan ke metode ini menjadi perilaku inline (in-line), yaitu, Anda dapat menyalin metode ini secara langsung di panggilan alih-alih membuat panggilan metode rutin (simpan breakpoint, tekan tumpukan), yang akan meningkatkan efisiensi program. Namun, jika ada terlalu banyak, ini akan menyebabkan kode kembung dan akan mempengaruhi efisiensi, sehingga metode ini harus digunakan dengan hati -hati. .
4 Kelas Definisi
Kelas terakhir apa pun tidak dapat diwarisi oleh siapa pun, yang berarti bahwa kelas ini adalah kelas daun dalam pohon warisan, dan kelas ini dianggap sempurna dan tidak memerlukan modifikasi apa pun (singkatnya, tidak disarankan)