JavaRush /Blog Jawa /Random-JV /Konstruktor kelas dhasar

Konstruktor kelas dhasar

Diterbitake ing grup
Hello! Pungkasan kita ngomong babagan konstruktor , lan kita sinau akeh babagan. Saiki kita bakal ngomong babagan konstruktor kelas dasar. Apa iku kelas dhasar ? Kasunyatane, ing Jawa, sawetara kelas sing beda bisa duwe asal sing padha. Konstruktor kelas dhasar - 2Iki diarani pusaka . Sawetara kelas turunan bisa duwe siji kelas leluhur sing umum. Contone, bayangake yen kita duwe kelas Animal(kewan):
public class Animal {

   String name;
   int age;
}
Kita bisa nggawe kanggo, contone, 2 kelas turunan - Catlan Dog. Iki ditindakake kanthi nggunakake tembung kunci extends.
public class Cat extends Animal {

}

public class Dog extends Animal {

}
Iki bisa uga migunani kanggo kita ing mangsa ngarep. Contone, yen tugas kanggo nyekel clurut, kita bakal nggawe obyek ing program Cat. Yen tugas kanggo mbukak sawise kelet, banjur kita nggunakake obyek Dog. Lan yen kita nggawe program sing simulates Clinic Veterinary, iku bakal bisa karo kelas Animal(kanggo bisa nambani loro kucing lan asu). Penting banget kanggo elinga ing mangsa ngarep yen nalika nggawe obyek, konstruktor kelas dhasar diarani pisanan , lan mung banjur konstruktor kelas kasebut dhewe, obyek sing digawe, diarani. Yaiku, nalika nggawe obyek, Catkonstruktor kelas bakal digunakake dhisik Animal, lan mung konstruktor Cat. Kanggo mesthekake iki, ayo nambah konstruktor Catlan Animaloutput menyang console.
public class Animal {

   public Animal() {
       System.out.println("Animal constructor completed");
   }
}


public class Cat extends Animal {

   public Cat() {
       System.out.println("The constructor Cat worked!");
   }

   public static void main(String[] args) {
       Cat cat = new Cat();
   }
}
Output konsol:

Отработал конструктор Animal
Отработал конструктор Cat!
Pancen, iki cara kerjane! Kanggo apa? Contone, supaya ora duplikat lapangan umum saka rong kelas. Contone, saben kewan duwe jantung lan otak, nanging ora saben kewan duwe buntut. Kita bisa nyatakake lapangan umum kanggo kabeh kewan braining heartkelas induk Animal, lan lapangan tailing subclass Cat. Saiki kita bakal nggawe konstruktor kanggo kelas Cat, ing ngendi kita bakal ngliwati 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");
   }
}
Pay manungsa waé:konstruktor bisa sukses, sanajan kelas Catora duwe lapangan brainlan heart. Kolom kasebut "ditarik" saka kelas dhasar Animal. Kelas turunan nduweni akses menyang lapangan kelas dasar, saengga Catbisa katon ing kelas kita. Mulane, kita ora perlu Catduplikat kolom kasebut ing kelas - kita bisa njupuk saka kelas Animal. Menapa malih, kita bisa kanthi tegas nyebut konstruktor kelas dasar ing konstruktor kelas turunan. Kelas dhasar uga disebut " superclass ," mulane Jawa nggunakake tembung kunci super. 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 sing ana ing kelas induk. Nyatane, sampeyan ora kudu nindakake iki. Cukup nelpon konstruktor kelas induk lan pass paramèter 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 konstruktor, Catkita disebut konstruktor Animallan ngliwati rong lapangan kasebut. Kita mung kudu miwiti kanthi tegas siji lapangan - tailsing Animalora ana. Elinga carane kita ngomong yen obyek digawe, konstruktor kelas induk diarani pisanan? Dadi, mulane tembung kasebut super()kudu dadi luwih dhisik ing konstruktor! Yen ora, logika konstruktor bakal rusak 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 nalika nggawe obyek saka kelas turunan, konstruktor kelas dhasar diarani pisanan. Lan yen sampeyan nyoba ngganti prilaku iki kanthi manual, ora bakal ngidini.

Proses nggawe obyek.

Ndhuwur kita katon ing conto karo basa lan tiyang sepah kelas - Animallan Cat. Saiki, nggunakake rong kelas kasebut minangka conto, kita bakal ndeleng proses nggawe obyek lan miwiti variabel. Kita ngerti yen variabel statis lan variabel instance (non-statis). Kita uga ngerti yen kelas dhasar Animalduwe variabel dhewe, lan kelas turunan Catduwe dhewe. Ayo nambah siji variabel statis menyang kelas kanggo Animalkajelasan . CatVariabel animalCountkelas Animalyaiku jumlah total spesies kewan ing bumi, lan variabel kasebut catsCountyaiku jumlah spesies kucing. Kajaba iku, kita bakal nemtokake nilai wiwitan kanggo kabeh variabel non-statis saka loro kelas (sing bakal diganti ing konstruktor).
public class Animal {

   String brain = "The initial value of brain in the Animal class";
   String heart = "The initial value of heart in the Animal class";

   public static int animalCount = 7700000;

   public Animal(String brain, String heart) {
       System.out.println("The constructor of the Animal base class is being executed");
       System.out.println("Have the variables of the Animal class already been initialized?");
       System.out.println("The current value of the static variable animalCount = " + animalCount);
       System.out.println("Current value of brain in class Animal = " + this.brain);
       System.out.println("Current value of heart in class Animal = " + this.heart);
       System.out.println("Have the variables of the Cat class already been initialized?");
       System.out.println("The current value of the static variable catsCount = " + Cat.catsCount);

       this.brain = brain;
       this.heart = heart;
       System.out.println("Animal base class constructor completed!");
       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 = "The initial value of tail in the Cat class";

   static int catsCount = 37;

   public Cat(String brain, String heart, String tail) {
       super(brain, heart);
       System.out.println("The constructor of the Cat class has started (the Animal constructor has already been executed)");
       System.out.println("The current value of the static variable catsCount = " + catsCount);
       System.out.println("Current value tail = " + this.tail);
       this.tail = tail;
       System.out.println("Current value tail = " + this.tail);
   }

   public static void main(String[] args) {
       Cat cat = new Cat("Brain", "Heart", "Tail");
   }
}
Dadi, kita nggawe obyek anyar saka kelas Catsing diwarisake saka Animal. Ayo nambah output console rinci kanggo program kita kanggo ndeleng apa sing bakal kelakon lan ing urutan apa. Iki bakal dadi output menyang konsol minangka asil nggawe obyek Cat:

Выполняется конструктор базового класса Animal
Были ли уже проинициализированы переменные класса Animal?
Текущее meaning статической переменной animalCount = 7700000
Текущее meaning brain в классе Animal = Изначальное meaning brain в классе Animal
Текущее meaning heart в классе Animal = Изначальное meaning heart в классе Animal
Были ли уже проинициализированы переменные класса Cat?
Текущее meaning статической переменной catsCount = 37
Конструктор базового класса Animal завершил работу!
Текущее meaning brain = Мозг
Текущее meaning heart = Сердце
Конструктор класса Cat начал работу (конструктор Animal уже был выполнен)
Текущее meaning статической переменной catsCount = 37
Текущее meaning tail = Изначальное meaning tail в классе Cat
Текущее meaning tail = Хвост
Dadi, saiki kita bisa ndeleng kanthi jelas apa variabel urutan sing diinisialisasi lan konstruktor diarani nalika nggawe obyek anyar:
  1. Variabel statis saka kelas dhasar ( ) diinisialisasi Animal. Ing kasus kita, variabel animalCountkelas Animaldiwenehi nilai 7700000.

  2. Variabel statis saka kelas turunan ( ) diinisialisasi Cat. Pay manungsa waé - kita isih ana ing konstruktor Animal, lan console wis ngandika:

    
        Выполняется конструктор базового класса Animal
        Были ли уже проинициализированы переменные класса Animal?
        Текущее meaning статической переменной animalCount = 7700000
        Текущее meaning brain в классе Animal = Изначальное meaning brain в классе Animal
        Текущее meaning heart в классе Animal = Изначальное meaning heart в классе Animal
        Были ли уже проинициализированы переменные класса Cat?
        Текущее meaning статической переменной catsCount = 37
  3. Sabanjure, variabel non-statis saka kelas dasar diinisialisasi . Kita khusus menehi nilai awal, sing banjur diganti dadi anyar ing konstruktor. Konstruktor Animaldurung ngrampungake karyane, nanging nilai awal brainwis heartditugasake:

    
        Выполняется конструктор базового класса Animal
        Были ли уже проинициализированы переменные класса Animal?
        Текущее meaning статической переменной animalCount = 7700000
        Текущее meaning brain в классе Animal = Изначальное meaning brain в классе Animal
        Текущее meaning heart в классе Animal = Изначальное meaning heart в классе Animal
  4. Konstruktor kelas dhasar wiwit bisa digunakake .

    Kita wis weruh yen tahap iki mung kaping papat berturut-turut: ing telung poin pisanan, nalika konstruktor wiwit kerja, Animalakeh variabel sing wis diwenehi nilai.

  5. Miwiti kolom non-statis saka kelas anak ( Cat).

    Iki kedadeyan sadurunge desainer Catwiwit kerja.

    Nalika dheweke wiwit kerja, variabel kasebut tailwis duwe nilai:

    
    Конструктор класса Cat начал работу (конструктор Animal уже был выполнен)
    Текущее meaning статической переменной catsCount = 37
    Текущее meaning tail = Изначальное meaning tail в классе Cat
  6. Konstruktor kelas turunan diarani Cat

Semono uga proses nggawe obyek ing basa Jawa! Aku kudu ngomong yen kita ora penggemar cramming gedhe, nanging luwih apik kanggo ngeling-eling urutan variabel initializing lan nelpon konstruktor lan ngelingi kanggo mangsa . Iki bakal nambah pangerten babagan kemajuan program lan kahanan obyek sampeyan kapan wae. Kajaba iku, kelas asring ora duwe kelas induk langsung (kelas super/kelas dasar). Ing kasus iki, item sing digandhengake karo kelas dhasar ora bakal dieksekusi.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION