Kanthi nunjukake metode kelas kanthi modifier
final
, tegese ora ana kelas turunan sing bisa ngatasi metode iki kanthi ngganti implementasine internal. Ing tembung liyane, kita ngomong bab versi final saka cara. Kelas sakabèhé uga bisa ditandhani minangka final
.
final class NoExtending {
// …
}
Kelas sing ditandhani final
ora bisa diwarisake lan kabeh cara kanthi ora langsung entuk properti kasebut final
. Nggunakake fitur final
ing deklarasi kelas lan metode bisa nambah tingkat keamanan kode. Yen kelas dilengkapi modifier final
, ora ana sing bisa ngluwihi kelas kasebut lan bisa uga nglanggar kontrak ing proses kasebut. Yen tandha final
nuduhake cara, sampeyan bisa dipercaya implementasine internal ing kabeh kahanan tanpa wedi "pemalsuan". Iku cocok kanggo nggunakake final
, contone, ing pranyatan saka cara sing mbutuhake verifikasi sandi ngetik pangguna kanggo mesthekake yen eksekusi pas apa cara Originally dimaksudaké. Panyerang sing bisa uga ora bakal bisa ngganti implementasine asli saka metode kasebut kanthi "nglebokake" menyang program versi sing ditindhes, sing, ujar, mesthi ngasilake nilai sing bener, nuduhake registrasi pangguna sing sukses, preduli saka tembung sandi apa wae. dheweke pancen mlebu. Sampeyan duwe hak, yen kahanan tartamtu ngidini, kanggo pindhah luwih lan ngumumake final
kabeh kelas minangka kelas; cara ValidatePassword
bakal ndarbeni properti padha ora langsung. Panggunaan modifier final
ing cara utawa deklarasi kelas nemtokke Watesan serius ing kamungkinan saka nggunakake luwih lan pangembangan kode. Panganggone final
metode ing deklarasi minangka indikator manawa implementasine metode kasebut mandiri lan lengkap. Programer liyane sing pengin nggunakake kelas sampeyan, ngembangake fungsine sing cocog karo kabutuhan dhewe, bakal diwatesi ing pilihan sarana kanggo nggayuh tujuane utawa dirampas. Kanthi menehi tandha final
kelas minangka sakabehe, sampeyan bakal mateni kemampuane kanggo diwarisake lan bakal nyuda migunani kanggo wong liya. Nalika sampeyan arep nggunakake modifier final
, priksa manawa sampeyan siyap kanggo kurban kuwi lan apa iku worth nggawe. Ing sawetara kasus, kanggo entuk tingkat keamanan kode sing cukup, ora perlu kanggo nemtokake kabeh kelas minangka final
- cukup bisa kanggo njaga extensibility kelas kanthi menehi tandha final
mung unsur struktural "kritis" karo modifier. Ing kasus iki, sampeyan bakal ninggalake fungsi utama kelas utuh lan ing wektu sing padha ngidini warisan karo tambahan anggota anyar, nanging tanpa redefining "lawas". Mesthine, kolom sing diakses dening kode metode kasebut final
kudu ditunjuk minangka final
salah siji private
, amarga yen ora ana kelas asale bakal bisa ngganti isine, mengaruhi prilaku metode sing cocog. Efek liyane saka nggunakake modifier final
ana hubungane karo simplifying masalah optimasi kode ditanggulangi dening compiler. Iki kedadeyan nalika metode sing ora ditandhani minangka diaranifinal
, sistem runtime nemtokake kelas nyata obyek, nggandhengake telpon karo kode paling cocok saka klompok cara overloaded, lan transfer kontrol kanggo kode sing. Nanging yen, contone, cara getName
ing conto kelas Attr
rembugan sadurungé wis ditetepake minangka final
, operasi nelpon bisa uga wis noticeably simplified. Ing kasus sing paling ora pati penting, kayata babagan getName
, kompiler mung bisa ngganti panggilan metode kanthi kode awak. Mekanisme iki diarani kode inlining. Nalika nggunakake versi inline saka cara, getName
loro ekspresi ing ngisor iki dieksekusi persis padha:
system.out.println("id = " + rose.name);
system.out.println("id = " + rose.getName());
Sanajan ekspresi ing ndhuwur padha karo, sing nomer loro isih duwe kauntungan, amarga metode kasebut getName
ngidini sampeyan menehi lapangan jeneng minangka properti mung diwaca, lan kode kelas duwe tingkat abstraksi tartamtu, sing ngidini sampeyan ngganti kanthi bebas. implementasi kelas. Skema optimasi sing padha bisa diterapake dening compiler menyang private
lan metode statiс
, amarga padha uga ora ngidini overriding. Nggunakake modifier final
ing deklarasi kelas uga ndadekake sawetara operasi mriksa jinis luwih efisien. Ing kasus iki, akeh operasi kasebut bisa ditindakake ing tahap kompilasi lan mula kesalahan potensial dideteksi luwih awal. Yen compiler ketemu referensi kanggo kelas ing teks sumber final
, bisa "yakin" sing obyek sing cocog saka jinis kasebut. Compiler bisa langsung nemtokake panggonan sing dikuwasani dening kelas ing hirarki kelas sakabèhé lan mriksa apa digunakake kanthi bener utawa ora. Yen modifier final
ora ditrapake, pamriksaan sing cocog ditindakake mung ing tahap eksekusi program. Latihan 3.4. Apa disaranake nyakup modifier pungkasan ing deklarasi metode (lan yen ya, sing endi) saka kelas kendaraan lan penumpang ? Pranala menyang sumber asli: http://src-code.net/metody-i-klassy-final-java
GO TO FULL VERSION