"Hai, Amigo! Topik pelajaran dina iki yaiku nggedhekake lan nyepetake konversi jinis. Sampeyan sinau babagan widening lan narrowing jinis primitif biyen. Ing Level 10. Dina iki kita bakal ngomong babagan cara kerjane kanggo jinis referensi, yaiku. conto kelas."

Ing kasunyatan, kabeh iku cukup prasaja. Mbayangno chain pusaka kelas kang: kelas, tiyang sepah, tiyang sepah tiyang sepah, etc., kabeh cara bali menyang kelas Obyek. Amarga kelas ngemot kabeh metode anggota kelas sing diwarisake , conto kelas kasebut bisa disimpen ing variabel sing jinise saka wong tuwane.

Iki contone:

Kode Katrangan
class Animal
{
public void doAnimalActions();
}class Cat extends Animal
{
public void doCatActions();
}class Tiger extends Cat
{
public void doTigerActions();
}
Ing kene kita duwe telung deklarasi kelas: Kewan, Kucing, lan Macan. Kucing marisi Kewan. Lan Macan marisi Kucing.
public static void main(String[] args)
{
Tiger tiger = new Tiger();
Cat cat = new Tiger();
Animal animal = new Tiger();
Object obj = new Tiger();
}
Obyek Macan tansah bisa ditugasake menyang variabel sing jinise minangka salah sawijining leluhur. Kanggo kelas Macan, iki yaiku Kucing, Kewan, lan Obyek.

Saiki ayo goleki konversi sing nggedhekake lan nyuda.

Yen operasi assignment nyebabake kita munggah ing chain warisan (menyang kelas Obyek), banjur kita dealing karo konversi widening (uga dikenal minangka upcasting). Yen kita pindhah mudhun chain menyang jinis obyek, banjur iku konversi narrowing (uga dikenal minangka downcasting).

Ngalih munggah ranté pusaka diarani widening, amarga ndadékaké kanggo jinis luwih umum. Nanging, kanthi mangkono, kita bakal kelangan kemampuan kanggo nggunakake metode sing ditambahake menyang kelas liwat warisan.

Kode Katrangan
public static void main(String[] args)
{
Object obj = new Tiger();
Animal animal = (Animal) obj;
Cat cat = (Cat) obj;
Tiger tiger = (Tiger) animal;
Tiger tiger2 = (Tiger) cat;
}
Nalika narrowing jinis, sampeyan kudu nggunakake operator konversi jinis, IE kita nindakake konversi eksplisit.

Iki nyebabake mesin Java mriksa apa obyek kasebut pancen duwe jinis sing pengin diowahi.

Inovasi cilik iki ngasilake pengurangan akeh jinis kesalahan casting, lan nambah stabilitas program Java.

Kode Katrangan
public static void main(String[] args)
{
Object obj = new Tiger();
if (obj instanceof Cat)
{
Cat cat = (Cat) obj;
cat.doCatActions();
}}
Luwih apik, gunakake  instanceof check
public static void main(String[] args)
{
Animal animal = new Tiger();
doAllAction(animal);

Animal animal2 = new Cat();
doAllAction(animal2);

Animal animal3 = new Animal();
doAllAction(animal3);
}

public static void doAllAction(Animal animal)
{
if (animal instanceof Tiger)
{
Tiger tiger = (Tiger) animal;
tiger.doTigerActions();
}

if (animal instanceof Cat)
{
Cat cat = (Cat) animal;
cat.doCatActions();
}

animal.doAnimalActions();
}
Lan kene sebabe. Deleng conto ing sisih kiwa.

Kita (kode) ora mesthi ngerti apa jinis obyek sing digunakake. Bisa uga obyek saka jinis sing padha karo variabel (Kewan), utawa jinis turunan (Kucing, Macan).

Coba metode doAllAction. Kerjane kanthi bener, preduli saka jinis obyek sing dilewati.

Ing tembung liya, bisa digunakake kanthi bener kanggo kabeh telung jinis: Kewan, Kucing, lan Macan.

public static void main(String[] args)
{
Cat cat = new Tiger();
Animal animal = cat;
Object obj = cat;
}
Kene kita duwe telung operasi assignment. Kabeh mau minangka conto konversi widening.

Operator jinis cast ora dibutuhake ing kene, amarga ora perlu mriksa. Referensi obyek mesthi bisa disimpen ing variabel sing jinise minangka salah sawijining leluhur.

"Oh, conto kaping pindho nganti pungkasan nggawe kabeh jelas: kenapa mriksa dibutuhake, lan kenapa jinis casting dibutuhake."

"Muga-muga. Aku pengin narik perhatian sampeyan menyang kasunyatan iki:"

Ora ana sing nyebabake obyek bisa diganti kanthi cara apa wae! Siji-sijine sing diganti yaiku jumlah metode sing kasedhiya kanggo diarani variabel referensi tartamtu.

Contone, variabel Cat ngidini sampeyan nelpon metode doAnimalActions lan doCatActions. Iku ora ngerti apa-apa bab cara doTigerActions, malah yen nuduhake obyek Tiger.

"Ya, aku ngerti. Iku luwih gampang tinimbang sing dakkira."