

Animal
kelas:
public class Animal {
String name;
int age;
}
Kita bisa ngumumake 2 kelas anak: Cat
lan Dog
. Iki rampung nggunakake tembung kunci extends .
public class Cat extends Animal {
}
public class Dog extends Animal {
}
Kita bisa nemokake iki migunani ing mangsa ngarep. Contone, yen ana tugas kanggo nyekel tikus, kita bakal nggawe Cat
obyek ing program kita. Yen tugas kanggo ngoyak tongkat, kita bakal nggunakake obyek Dog
. Lan yen kita nggawe program sing simulates Clinic Veterinary, iku bakal bisa karo Animal
kelas (lan kanthi mangkono bisa nambani loro kucing lan asu). Penting banget kanggo elinga yen obyek digawe, konstruktor kelas dhasar kasebut pisanan diarani . Mung sawise konstruktor rampung, program nglakokake konstruktor kelas sing cocog karo obyek sing digawe. Ing tembung liyane, nalika nggawe Cat
obyek, konstruktor Animal
mbukak pisanan , lan mung sawise ikuCat
konstruktor dieksekusi . Kanggo ndeleng iki, nambah sawetara output console kanggo Cat
lan Animal
konstruktor.
public class Animal {
public Animal() {
System.out.println("Animal constructor executed");
}
}
public class Cat extends Animal {
public Cat() {
System.out.println("Cat constructor executed!");
}
public static void main(String[] args) {
Cat cat = new Cat();
}
}
Output konsol: Konstruktor kewan dieksekusi Konstruktor Cat dieksekusi! Pancen, iku bisa digunakake! Kenging punapa? Salah sawijining alesan yaiku supaya ora duplikat lapangan sing dienggo bareng ing antarane rong kelas kasebut. Contone, saben kewan duwe jantung lan otak, nanging ora saben kewan duwe buntut. Kita bisa ngumumake lapangan otak lan jantung , sing umum kanggo kabeh kewan, ing Animal
kelas induk, lan lapangan buntut ing Cat
subkelas. . Saiki kita bakal ngumumake Cat
konstruktor kelas sing njupuk argumen kanggo kabeh 3 lapangan.
public class Cat extends Animal {
String tail;
public Cat(String brain, String heart, String tail) {
this.brain = brain;
this.heart = heart;
this.tail = tail;
}
public static void main(String[] args) {
Cat cat = new Cat("Brain", "Heart", "Tail");
}
}
Cathetan: Konstruktor bisa digunakake kanthi bener sanajan kelas kasebut Cat
ora duwe lapangan otak lan jantung . Kolom kasebut "warisan" saka Animal
kelas dhasar. Kelas pewaris nduweni akses menyang lapangan kelas dasar , saengga bisa katon ing Cat
kelas kita. Akibaté, kita ora perlu duplikat kolom iki ing Cat
kelas. Kita bisa njupuk saka Animal
kelas. Apa maneh, kita bisa kanthi tegas nyebut konstruktor kelas dasar ing konstruktor kelas anak. Kelas dhasar uga disebut " superclass ". Pramila Jawa nggunakake tembung kunci super kanggo nuduhake kelas dhasar. Ing conto sadurunge
public Cat(String brain, String heart, String tail) {
this.brain = brain;
this.heart = heart;
this.tail = tail;
}
Kita nemtokake saben lapangan kanthi kapisah ing kelas induk. Kita ora kudu nindakake iki. Cukup nelpon konstruktor kelas induk lan ngirim argumen sing dibutuhake:
public class Animal {
String brain;
String heart;
public Animal(String brain, String heart) {
this.brain = brain;
this.heart = heart;
}
public class Cat extends Animal {
String tail;
public Cat(String brain, String heart, String tail) {
super(brain, heart);
this.tail = tail;
}
public static void main(String[] args) {
Cat cat = new Cat("Brain", "Heart", "Tail");
}
}
Ing Cat
konstruktor, kita disebut Animal
konstruktor lan ngliwati rong lapangan. Kita mung duwe siji lapangan sing kudu diinisialisasi kanthi jelas: buntut , sing ora ana ing Animal
. Elinga yen konstruktor kelas induk diarani pisanan nalika obyek digawe? Mulane super () kudu dadi pisanan ing konstruktor! Yen ora, logika konstruktor bakal dilanggar lan program bakal ngasilake kesalahan.
public class Cat extends Animal {
String tail;
public Cat(String brain, String heart, String tail) {
this.tail = tail;
super(brain, heart);// Error!
}
public static void main(String[] args) {
Cat cat = new Cat("Brain", "Heart", "Tail");
}
}
Compiler ngerti yen obyek saka kelas anak digawe, konstruktor kelas dhasar diarani pisanan. Lan yen sampeyan nyoba ngganti prilaku iki kanthi manual, compiler ora bakal ngidini.
Carane obyek digawe
Kita sadurunge katon ing conto karo basa lan tiyang sepah kelas:Animal
lan Cat
. Nggunakake rong kelas kasebut minangka conto, saiki kita bakal ndeleng proses nggawe obyek lan miwiti variabel. Kita ngerti manawa ana variabel statis lan instance (non-statis) . Kita uga ngerti yen Animal
kelas dhasar duwe variabel, lan Cat
kelas bocah duwe dhewe. Kanggo gamblang, kita bakal nambah siji variabel statis saben kanggo Animal
lan Cat
kelas. Variabel animalCount ing Animal
kelas bakal makili jumlah total spesies kewan ing Bumi, lan catCountvariabel bakal nuduhake jumlah spesies kucing. Kajaba iku, kita bakal nemtokake nilai wiwitan kanggo kabeh variabel non-statis ing loro kelas (sing bakal diganti ing konstruktor).
public class Animal {
String brain = "Initial value of brain in the Animal class";
String heart = "Initial value of heart in the Animal class";
public static int animalCount = 7700000;
public Animal(String brain, String heart) {
System.out.println("Animal base class constructor is running");
System.out.println("Have the variables of the Animal class already been initialized?");
System.out.println("Current value of static variable animalCount = " + animalCount);
System.out.println("Current value of brain in the Animal class = " + this.brain);
System.out.println("Current value of heart in the Animal class = " + this.heart);
System.out.println("Have the variables of the Cat class already been initialized?");
System.out.println("Current value of static variable catCount = " + Cat.catCount);
this.brain = brain;
this.heart = heart;
System.out.println("Animal base class constructor is done!");
System.out.println("Current value of brain = " + this.brain);
System.out.println("Current value of heart = " + this.heart);
}
}
public class Cat extends Animal {
String tail = "Initial value of tail in the Cat class";
static int catCount = 37;
public Cat(String brain, String heart, String tail) {
super(brain, heart);
System.out.println("The cat class constructor has started (The Animal constructor already finished)");
System.out.println("Current value of static variable catCount = " + catCount);
System.out.println("Current value of tail = " + this.tail);
this.tail = tail;
System.out.println("Current value of tail = " + this.tail);
}
public static void main(String[] args) {
Cat cat = new Cat("Brain", "Heart", "Tail");
}
}
Dadi, kita nggawe conto anyar saka Cat
kelas, sing dadi warisan Animal
. Kita wis nambah sawetara output console rinci kanggo ndeleng apa kedados lan ing urutan apa. Iki sing bakal ditampilake nalika Cat
obyek digawe: Konstruktor kelas basis kewan mlaku Apa variabel kelas Kewan wis diinisialisasi? Nilai saiki variabel statis animalCount = 7700000 Nilai saiki otak ing kelas Animal = Nilai awal otak ing kelas Animal Nilai saiki jantung ing kelas Animal = Nilai awal jantung ing kelas Animal Nduwe variabel kelas Kucing wis wis diinisialisasi? Nilai saiki saka variabel statis catCount = 37 Konstruktor kelas dasar kewan wis rampung! Nilai saiki otak = Otak Nilai saiki jantung = Jantung Konstruktor kelas kucing wis diwiwiti (Konstruktor Animal wis rampung) Nilai saiki variabel statis catCount = 37 Nilai saiki buntut = Nilai awal buntut ing kelas Kucing Nilai saiki buntut = buntut Dadi, saiki kita bisa ndeleng kanthi jelas urutan initialization variabel lan panggilan konstruktor nalika obyek anyar digawe:
- Variabel statis saka kelas dhasar (
Animal
) diinisialisasi. Ing kasus kita, variabel animalCountAnimal
kelas disetel dadi 7700000. -
Variabel statis saka kelas anak (
Cat
) diwiwiti.Cathetan: kita isih ana ing
Animal
konstruktor lan wis ditampilake:Konstruktor kelas basis kewan mlaku
Apa variabel kelas Kewan wis diinisialisasi?
Nilai saiki variabel statis animalCount = 7700000
Nilai saiki otak ing kelas Animal = Nilai awal otak ing kelas Animal
Nilai saiki jantung ing kelas Animal = Nilai awal jantung ing kelas Animal
Nduweni variabel kelas Kucing wis wis diinisialisasi?
Nilai saiki saka variabel statis catCount = 37 -
Banjur variabel non-statis saka kelas dasar diinisialisasi. Kita khusus menehi nilai awal, sing banjur diganti ing konstruktor. Konstruktor Animal durung rampung, nanging nilai awal otak lan jantung wis ditugasake:
Konstruktor kelas basis kewan mlaku
Apa variabel kelas Kewan wis diinisialisasi?
Nilai saiki variabel statis animalCount = 7700000
Nilai saiki otak ing kelas Animal = Nilai awal otak ing kelas Animal
Nilai saiki jantung ing kelas Animal = Nilai awal jantung ing kelas Animal -
Konstruktor kelas dhasar diwiwiti.
Kita wis yakin yen langkah iki kaping papat: ing telung langkah pisanan ing wiwitan konstruktorAnimal
, akeh variabel sing wis diwenehi nilai. -
Kolom non-statis saka kelas anak (
Cat
) diwiwiti.
Iki kedadeyan sadurungeCat
konstruktor wiwit mlaku.
Nalika wiwit mlaku, variabel buntut wis duwe nilai:Konstruktor kelas kucing wis diwiwiti (Konstruktor Animal wis rampung) Nilai saiki variabel statis catCount = 37 Nilai saiki buntut = Nilai awal buntut ing kelas Kucing
-
Konstruktor
Cat
kelas anak diaraniLan sing nggawe obyek kaya ing Jawa!
Aku kudu ujar manawa kita ora dadi penggemar sinau babagan sinau, nanging luwih becik ngeling-eling urutan initialization variabel lan panggilan konstruktor .
Iki bakal nambah pemahaman sampeyan babagan aliran program, lan kahanan obyek sampeyan ing wayahe tartamtu.
Kajaba iku, akeh kelas sing ora nggunakake warisan. Ing kasus iki, langkah-langkah sing ana gandhengane karo kelas dhasar ora ditrapake.
Wacan liyane: |
---|
GO TO FULL VERSION