JavaRush /Blog Jawa /Random-JV /Bedane antarane konstruktor lan cara biasa.
fog
tingkat

Bedane antarane konstruktor lan cara biasa.

Diterbitake ing grup
Konstruktor minangka cara khusus sing dimaksudake kanggo nyetel nilai kolom obyek. Sepisanan, konstruktor obyek ora beda banget karo metode obyek biasa. Lan pancen, ing konstruktor kita bisa nindakake kabeh sing bisa ditindakake kanthi cara obyek biasa: teks output menyang konsol, ngakses kabeh lapangan lan metode obyek anyar, mbuwang pengecualian, lan liya-liyane. Kaya cara biasa, konstruktor bisa duwe argumen. Kaya cara sing kakehan, bisa uga ana sawetara konstruktor kanthi teken beda. Kaya cara umum, konstruktor bisa diparameter kanthi variabel jinis. Malah yen kita katon menyang bytecode sing digawe dening compiler, ing panggonan sing kudu ana telpon kanggo konstruktor, kita bakal nemokake telpon kanggo sawetara cara karo jeneng kang telpon ora <init>beda saka telpon kanggo cara liyane. obyek kasebut. Lan wis nemokake bytecode saka cara iki, kita bakal nemokake sing ngemot asil kompilasi kita konstruktor. Iku misale jek sing ana ora akeh beda saka cara conventional, nanging padha ana, lan cukup pinunjul. Pisanan, ayo dipikirake, kenapa kita butuh konstruktor? Kanggo nyimpen lan ngolah data apa wae, apa wae jinis primitif, susunan, utawa obyek, kita butuh memori tartamtu. Iki bisa dadi registrasi prosesor, spasi tumpukan, utawa spasi sing dialokasikan ing bagean data proses, utawa ing bagean memori sing dialokasikan kanthi dinamis (tumpukan). Ing pirang-pirang basa pamrograman, kanggo tujuan nyepetake, nalika program njaluk potongan memori anyar, memori kasebut diwenehake menyang program sing ora diresiki, lan bisa ngemot data sewenang-wenang sing disimpen ing sel memori iki sadurunge. Nyiyapake lan nulis nilai-nilai sing dibutuhake menyang sepotong memori supaya ing pungkasan bakal ana sawetara struktur data sing migunani sing ana ing pundak programmer. Mesthine, programer pengin nggawe urip luwih gampang lan nulis rutinitas kanggo miwiti (yaiku, nyetel nilai awal) kanggo struktur data sing asring digunakake. Rutinitas kasebut meh padha digunakake, mula para pangripta basa Jawa mutusake nggawe rutinitas inisialisasi kasebut diwajibake nalika nggawe obyek, lan diarani konstruktor . Nalika obyek anyar digawe ing Jawa, ing ngisor iki kelakon: First, manager memori Jawa allocates jumlah memori perlu kanggo nampung obyek. Ing kasus iki, ora mung lapangan sing diumumake langsung ing kelas obyek sing digawe, nanging uga lapangan sing diumumake ing kabeh leluhur kelas iki. Kajaba iku, volume iki kalebu papan kanggo nempatake struktur sing digunakake dening mesin Java kanggo kabutuhan internal. Kabeh kolom "kosong" kasebut kanthi otomatis disetel menyang nilai standar - nullkanggo jinis referensi, 0nomer lan falsekanggoboolean. Sawise iki, konstruktor kelas diarani kanthi otomatis, sing tugase kanggo nyetel nilai awal kolom obyek. Nalika ing cara normal statement pisanan bisa apa wae, konstruktor wis akeh kurang kamardikan. Pernyataan pisanan saka konstruktor kudu dadi panggilan eksplisit menyang konstruktor liyane saka kelas sing padha, utawa panggilan eksplisit utawa implisit menyang konstruktor kelas induk. Panggilan eksplisit menyang konstruktor saka kelas sing padha digawe nggunakake tembung kunci thissing diikuti karo sakumpulan argumen sing dilampirake ing kurung. Nelpon konstruktor kelas induk kanthi tegas ditindakake kanthi cara sing padha, nanging tembung kunci digunakake super. Ing bantahan saka telpon eksplisit kanggo konstruktor saka kelas padha utawa tiyang sepah, sampeyan ora bisa ngakses kothak lan cara saka obyek, uga nggunakake tembung kunci thislan super, wiwit telpon eksplisit kanggo konstruktor pirso konteks statis. Kanggo implicitly nelpon konstruktor kelas induk, sampeyan ora perlu nulis apa-apa, nanging konstruktor standar diarani implisit, sing kudu ana lan katon ing kelas saiki. Ing wektu sing padha, kudu dielingi yen rantai nelpon konstruktor induk diselani sadurunge konstruktor kelas Objectsing ana ing ndhuwur rantai sukses ngrampungake karyane, mula obyek kasebut ora bisa dirampungake, yaiku, metode kasebut. finalize()obyek kuwi ora bakal disebut. Sawise konstruktor kelas induk rampung, kontrol implisit ditransfer menyang pamblokiran initializer conto lan initializers lapangan conto saka kelas saiki. Inisialisasi dieksekusi miturut urutan sing katon ing teks program. Mung sawise initializers ngrampungake karya, kontrol ditransfer menyang liyane saka konstruktor. Fitur sing isih ana ing konstruktor ana hubungane karo model memori Jawa. Yen kelas, utawa salah siji saka leluhure, overrides method finalize(), banjur completion saka konstruktor bakal kelakon sadurunge ( kedadeyan-sadurunge ) cara mlaku finalize(). Yen ana Utas weruh referensi kanggo obyek sawise konstruktor rampung, iku dijamin Utas iki bakal ndeleng bener initialized final-fields saka obyek, initialization kang dumadi sadurunge completion saka konstruktor.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION