CodeGym /Blog Java /rawak /Rangkaian Pembina di Jawa
John Squirrels
Tahap
San Francisco

Rangkaian Pembina di Jawa

Diterbitkan dalam kumpulan

Apakah itu Constructor Chaining?

Pembina dalam Java ialah kaedah khusus yang digunakan dalam penciptaan objek kelas. Pembina dipanggil setiap kali objek kelas dicipta. Ia boleh digunakan untuk memberikan nilai kepada sifat objek pada masa penciptaan. Terdapat berbilang pembina dalam kelas Java dengan senarai parameter yang berbeza. Rantaian pembina digunakan untuk menggunakan pelaksanaan yang berbeza bagi pembina kelas/kelas induk yang sama pada masa penciptaan objek.

Bagaimanakah rantaian pembina dilaksanakan di Jawa?

Terdapat dua cara untuk merantai pembina berdasarkan cara memanggil pembina. Mereka adalah seperti berikut.
  • menggunakan kata kunci ini () - untuk memanggil pembina kelas yang sama
  • menggunakan kata kunci super() - untuk memanggil pembina kelas induk
Ini dijelaskan dalam contoh berikut.Rantaian Pembina di Jawa - 1

Contoh rantaian pembina #1 – Pembina dirantai menggunakan kata kunci() ini

Kami telah mengisytiharkan empat pembina untuk DerivedClass. Satu tanpa hujah dan tiga lagi dengan hujah yang berbeza. Di dalam setiap pembina, kata kunci ini() digunakan untuk memanggil pembina seterusnya bagi kelas yang sama.

package com.tutorialwriting.constchaining;
 
public class DerivedClass{
 
    String firstName;
    String country;
    int age;
 
    public DerivedClass() {
        // calling one argument constructor
        this("Maggie");
    }
 
    public DerivedClass(String firstName) {
        // calling two argument constructor
        this(firstName, 15);
    }
 
    public DerivedClass(String firstName, int age) {
        // calling three argument constructor
        this(firstName, age, "Australia");
    }
 
    public DerivedClass(String firstName, int age, String country) {
        this.firstName = firstName;
        this.age = age;
        this.country = country;
    }
 
    void displayValues() {
        System.out.println("First Name : " + firstName);
        System.out.println("Country : " + country);
        System.out.println("Age : " + age);
    }
 
    public static void main(String args[]) {
        DerivedClass object = new DerivedClass();
        object.displayValues();
    }
}
Keluaran pelaksanaanRantaian Pembina di Jawa - 2

Contoh rantaian pembina #2 – Pembina dirantai menggunakan kata kunci super().

Di sini, kelas kanak-kanak memanggil pembina kelas induk menggunakan kata kunci super() . BaseClass mempunyai tiga pembina. Pembina tanpa hujah memanggil salah satu daripada tiga-argumen-pembina BaseClass menggunakan this() .

package com.tutorialwriting.constchaining;
 
public class BaseClass {
 
    public BaseClass() {
        //calling a three argument constructor of the same class
        this("Male", "English", "1989/11/10");
        System.out.println("I'm executed third!!!");
    }
 
    public BaseClass(String firstName, String surname, int idNo) {
        System.out.println("I'm executed first!");
        System.out.println("First name : " + firstName);
        System.out.println("Surname : " + surname);
        System.out.println("ID Number : " + idNo);
    }
 
    public BaseClass(String gender, String nationality, String birthDate) {
        System.out.println("I'm executed second!!");
        System.out.println("Gender : " + gender);
        System.out.println("Nationality : " + nationality);
        System.out.println("Birth Date : " + birthDate);
    }
 
}
DerivedClass mempunyai dua pembina, masing-masing memanggil pembina berbeza kelas super menggunakan super() .

package com.tutorialwriting.constchaining;
 
public class DerivedClass extends BaseClass {
 
    public DerivedClass() {
        //calling no argument constructor of the super class
        super();
    }
 
    public DerivedClass(String firstName, String surname, int idNo) {
        //calling three argument constructor of the super class
        super(firstName, surname, idNo);
    }
 
    public static void main(String args[]) {
        DerivedClass object2 = new DerivedClass("Paul", "Wilson", 123456);
        DerivedClass object1 = new DerivedClass();
    }
}
Keluaran pelaksanaanRantaian Pembina di Jawa - 3

Panggilan pembina tersirat vs. Eksplisit

Java mempunyai dua cara yang berbeza untuk memanggil pembina: Panggilan tersirat dan panggilan eksplisit.
  • Panggilan eksplisit merujuk kepada memanggil pembina secara eksplisit dalam kod menggunakan this() atau super() .
  • Panggilan tersirat merujuk kepada panggilan pembina tanpa hujah bagi kelas super secara tersirat apabila tiada panggilan eksplisit daripada pembina kelas kanak-kanak. Dalam erti kata lain, pengkompil menambah panggilan super() sebagai baris pertama mana-mana pembina kelas kanak-kanak jika pengaturcara secara eksplisit tidak memanggil super() dalam kod.

Mengapa kita memerlukan rantaian pembina?

Terdapat beberapa tujuan yang berbeza untuk mempunyai rantai pembina di Jawa, seperti yang disenaraikan di bawah.
  • Ia adalah satu cara untuk mengakses sifat pembina lain atau sifat kelas induk.
  • Semasa memanggil pembina lain, hanya satu objek sedang digunakan, iaitu contoh semasa kelas. Inisialisasi berlaku di satu tempat, tetapi kami mempunyai keistimewaan untuk memanggil pelaksanaan pembina yang berbeza melalui rantaian. Ini sangat membantu dalam pengurusan memori dan penyelenggaraan kod.

Kesimpulan

Dalam tutorial ini, kami membincangkan rantaian pembina di Jawa. Pembina ialah segmen kod seperti kaedah yang digunakan semasa membuat objek. Kelas Java boleh mempunyai sebarang bilangan pembina dengan senarai parameter yang berbeza. Rantaian pembina ialah cara mudah untuk mengendalikan pemulaan yang berbeza dengan satu contoh kelas. Beberapa perkara penting yang perlu diberi perhatian daripada tutorial ini disenaraikan di bawah.
  • Jika pengaturcara tidak menambahkannya secara eksplisit pada kod, pengkompil menambah pembina tanpa hujah awam ke kelas Java. Ini dipanggil pembina lalai.
  • this() dan super() hendaklah ditulis sebagai baris pertama pembina.
  • this() digunakan untuk memanggil pembina kelas yang sama manakala super() digunakan untuk memanggil pembina kelas super segera.
  • Harus ada sekurang-kurangnya satu pembina dalam kelas yang tidak mengandungi kata kunci this() .
  • Jika tidak ditambah secara eksplisit, pengkompil menambah panggilan super() tanpa hujah kepada setiap pembina kelas kanak-kanak. Ini akan membantu instansiasi kelas dengan betul.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION