CodeGym /Blog Jawa /Acak /Konstruktor kelas dhasar
John Squirrels
tingkat
San Francisco

Konstruktor kelas dhasar

Diterbitake ing grup
Hi! Pungkasan kita ngomong babagan konstruktor lan sinau akeh babagan. Saiki kita bakal ngomong babagan konstruktor kelas dasar .
Konstruktor kelas dhasar - 1
Apa kelas dhasar ? Iku ana hubungane karo kasunyatan sing ing Jawa sawetara kelas beda bisa duwe asal umum.
Konstruktor kelas dhasar - 2
Iki diarani pusaka . Sawetara kelas bocah bisa duwe siji leluhur sing padha. Contone, bayangake yen kita duwe Animalkelas:

public class Animal {
  
   String name;
   int age;
}
Kita bisa ngumumake 2 kelas anak: Catlan 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 Catobyek, konstruktor Animalmbukak pisanan , lan mung sawise ikuCatkonstruktor dieksekusi . Kanggo ndeleng iki, nambah sawetara output console kanggo Catlan Animalkonstruktor.

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 Animalkelas induk, lan lapangan buntut ing Catsubkelas. . Saiki kita bakal ngumumake Catkonstruktor 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 Catora duwe lapangan otak lan jantung . Kolom kasebut "warisan" saka Animalkelas dhasar. Kelas pewaris nduweni akses menyang lapangan kelas dasar , saengga bisa katon ing Catkelas kita. Akibaté, kita ora perlu duplikat kolom iki ing Catkelas. Kita bisa njupuk saka Animalkelas. 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 Catkonstruktor, kita disebut Animalkonstruktor 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: Animallan 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 Animalkelas dhasar duwe variabel, lan Catkelas bocah duwe dhewe. Kanggo gamblang, kita bakal nambah siji variabel statis saben kanggo Animallan Catkelas. Variabel animalCount ing Animalkelas 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 Catkelas, sing dadi warisan Animal. Kita wis nambah sawetara output console rinci kanggo ndeleng apa kedados lan ing urutan apa. Iki sing bakal ditampilake nalika Catobyek 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:
  1. Variabel statis saka kelas dhasar ( Animal) diinisialisasi. Ing kasus kita, variabel animalCountAnimal kelas disetel dadi 7700000.

  2. Variabel statis saka kelas anak ( Cat) diwiwiti.

    Cathetan: kita isih ana ing Animalkonstruktor 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


  3. 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


  4. Konstruktor kelas dhasar diwiwiti.
    Kita wis yakin yen langkah iki kaping papat: ing telung langkah pisanan ing wiwitan konstruktor Animal, akeh variabel sing wis diwenehi nilai.


  5. Kolom non-statis saka kelas anak ( Cat) diwiwiti.
    Iki kedadeyan sadurunge Catkonstruktor 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


  6. Konstruktor Catkelas anak diarani

    Lan 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.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION