1. Variabel wiwitan
Kaya sing wis dingerteni, sampeyan bisa ngumumake sawetara variabel ing kelas sampeyan, lan ora mung ngumumake, nanging uga langsung miwiti kanthi nilai awal.
Lan variabel sing padha bisa diinisialisasi ing konstruktor uga. Iki tegese, ing teori, variabel kasebut bisa diwenehi nilai kaping pindho. Tuladha
Kode | Cathetan |
---|---|
|
Variabel age diwenehi nilai awal Nilai awal ditimpa Variabel umur nyimpen nilai awal. |
|
Iki diijini: konstruktor pisanan bakal diarani |
|
Iki diijini: konstruktor kapindho bakal diarani |
Iki kedadeyan nalika Cat cat = new Cat("Whiskers", 2);
dieksekusi:
- A
Cat
obyek digawe - Kabeh variabel conto diinisialisasi karo nilai awal
- Konstruktor diarani lan kode kasebut dieksekusi.
Ing tembung liyane, variabel pisanan entuk nilai awal, lan mung banjur kode konstruktor dieksekusi.
2. Urutan initialization saka variabel ing kelas
Variabel ora mung diwiwiti sadurunge konstruktor mlaku - diinisialisasi kanthi urutan sing wis ditemtokake: urutan sing diumumake ing kelas.
Ayo goleki sawetara kode sing menarik:
Kode | Cathetan |
---|---|
|
Kode iki ora bakal dikompilasi, amarga nalika a
variabel digawe durung ana b
lan c
variabel. Nanging sampeyan bisa nulis kode kaya ing ngisor iki - kode iki bakal dikompilasi lan bakal mlaku kanthi apik.
Kode | Cathetan |
---|---|
|
0 0+2 0+2+3 |
Nanging elinga yen kode sampeyan kudu transparan kanggo pangembang liyane. Luwih becik ora nggunakake teknik kaya iki, amarga bisa ngganggu maca kode kasebut.
Ing kene kita kudu ngelingi yen sadurunge variabel diwenehi nilai, dheweke duwe nilai standar . Kanggo int
jinis, iki nol.
Nalika JVM miwiti a
variabel, mung bakal nemtokake nilai standar kanggo jinis int: 0.
Nalika tekan b
, variabel kasebut wis dikenal lan duwe nilai, mula JVM bakal menehi nilai 2.
Lan nalika tekan c
variabel, variabel a
lan b
wis diwiwiti, mula JVM bakal gampang ngetung nilai awal kanggo c
: 0 + 2 + 3.
Yen sampeyan nggawe variabel ing sawijining metode, sampeyan ora bisa nggunakake kasebut kajaba sampeyan wis menehi nilai sadurunge. Nanging iki ora bener kanggo variabel kelas! Yen nilai dhisikan ora diutus kanggo variabel kelas, banjur diwenehi nilai standar.
3. Konstanta
Nalika kita lagi nganalisa carane obyek digawe, iku worth ndemek ing initialization saka konstanta, IE variabel karo modifier final
.
Yen variabel duwe final
modifier, mula kudu diwenehi nilai awal. Sampeyan wis ngerti iki, lan ora ana sing nggumunake.
Nanging apa sampeyan ora ngerti iku sampeyan ora kudu nemtokake nilai awal langsung yen sampeyan nemtokake ing konstruktor. Iki bakal bisa digunakake kanthi becik kanggo variabel pungkasan. Siji-sijine syarat yaiku yen sampeyan duwe sawetara konstruktor, mula variabel pungkasan kudu diwenehi nilai ing saben konstruktor.
Tuladha:
public class Cat
{
public final int maxAge = 25;
public final int maxWeight;
public Cat (int weight)
{
this.maxWeight = weight; // Assign an initial value to the constant
}
}
4. Kode ing konstruktor
Lan sawetara cathetan sing luwih penting babagan konstruktor. Mengko, nalika sampeyan terus sinau basa Jawa, sampeyan bakal nemokake bab kaya warisan, serialization, pangecualian, etc. Padha kabeh pengaruhe karya konstruktor kanggo werna-werna derajat. Ora ana gunane kanggo nyilem menyang topik kasebut saiki, nanging kita kudu paling ora ndemek.
Contone, iki minangka komentar penting babagan konstruktor. Ing teori, sampeyan bisa nulis kode apa wae kerumitan ing konstruktor. Nanging aja nindakake iki. Tuladha:
|
Mbukak file maca stream Waca file menyang array bait Simpen array bait minangka string Nampilake isi file ing layar |
Ing konstruktor kelas FilePrinter, kita langsung mbukak stream byte ing file lan maca isine. Iki minangka prilaku sing rumit lan bisa nyebabake kesalahan.
Apa yen ora ana file kasebut? Apa yen ana masalah nalika maca file kasebut? Apa yen gedhe banget?
Logika kompleks nyebabake kemungkinan kesalahan sing dhuwur lan tegese kode kasebut kudu nangani pangecualian kanthi bener.
Conto 1 - Serialisasi
Ing program Java standar, ana akeh kahanan sing dudu sampeyan sing nggawe obyek kelas sampeyan. Contone, umpamane sampeyan mutusake ngirim obyek liwat jaringan: ing kasus iki, mesin Java dhewe bakal ngowahi obyek sampeyan dadi sakumpulan bita, ngirim, lan nggawe maneh obyek saka set bita.
Nanging umpamane file sampeyan ora ana ing komputer liyane. Bakal ana kesalahan ing konstruktor, lan ora ana sing bakal nangani. Lan cukup bisa nyebabake program kasebut mandheg.
Conto 2 - Initializing kolom saka kelas
Yen konstruktor kelas sampeyan bisa mbuwang pangecualian sing dicenthang, yaiku ditandhani karo tembung kunci mbuwang, sampeyan kudu nyekel pangecualian sing dituduhake ing metode sing nggawe obyek sampeyan.
Nanging apa yen ora ana cara kasebut? Tuladha:
Kode | Cathetan |
---|---|
|
Kode iki ora bakal kompilasi. |
Konstruktor FilePrinter
kelas bisa mbuwang pangecualian sing dicenthang , tegese sampeyan ora bisa nggawe FilePrinter
obyek tanpa mbungkus ing blok coba. Lan blok nyoba-nyekel mung bisa ditulis ing cara
5. Konstruktor kelas dhasar
Ing wulangan sadurunge, kita ngrembug babagan warisan. Sayange, rembugan lengkap kita warisan lan OOP dilindhungi undhang-undhang kanggo tingkat darmabakti kanggo OOP, lan pusaka konstruktor wis cocog kanggo kita.
Yen kelas sampeyan entuk warisan kelas liyane, obyek saka kelas induk bakal dilebokake ing obyek kelas sampeyan. Apa maneh, kelas induk duwe variabel dhewe lan konstruktor dhewe.
Tegese iku penting banget kanggo sampeyan ngerti lan ngerti carane variabel diinisialisasi lan konstruktor diarani nalika kelas sampeyan duwe kelas induk lan sampeyan entuk warisan lan metode.
Kelas
Kepiye carane ngerti urutan variabel sing diinisialisasi lan konstruktor diarani? Ayo diwiwiti kanthi nulis kode kanggo rong kelas. Siji bakal oleh warisan liyane:
Kode | Cathetan |
---|---|
|
Kelas ChildClass marisi ParentClass kelas. |
Kita kudu nemtokake urutan variabel sing diinisialisasi lan konstruktor diarani. Log bakal mbantu kita nindakake iki.
logging
Logging minangka proses ngrekam tumindak sing ditindakake dening program nalika mlaku, kanthi nulis menyang konsol utawa file.
Iku cukup prasaja kanggo nemtokake sing konstruktor wis disebut: ing awak konstruktor, nulis pesen kanggo console. Nanging kepiye sampeyan bisa ngerti yen variabel wis diinisialisasi?
Bener, iki uga ora angel banget: nulis cara khusus sing bakal ngasilake nilai sing digunakake kanggo nginisialisasi variabel, lan log initialization. Iki kaya kode kasebut:
Kode pungkasan
|
Nggawe ChildClass obyek Cara iki nulis teks liwati menyang console lan uga ngasilake. Nyatakake teks Tampilan ParentClass kelas lan uga miwiti variabel kasebut. Tulis pesen sing konstruktor wis disebut. Nglirwakake nilai bali. Nyatakake teks Tampilan ChildClass kelas lan uga miwiti variabel kasebut. Tulis pesen sing konstruktor wis disebut. Nglirwakake nilai bali. |
Yen sampeyan nindakake kode iki, teks bakal ditampilake ing layar kaya mangkene:
Output konsol saka metodeMain.print() |
---|
|
Supaya sampeyan bisa tansah mesthekake yen variabel kelas diwiwiti sadurunge konstruktor diarani. Kelas dhasar diwiwiti kanthi lengkap sadurunge wiwitan kelas sing diwarisake.
GO TO FULL VERSION