CodeGym /Java Blog /Acak /Chaining Konstruktor di Jawa
John Squirrels
Level 41
San Francisco

Chaining Konstruktor di Jawa

Dipublikasikan di grup Acak

Apa itu Chaining Konstruktor?

Konstruktor di Java adalah metode khusus yang digunakan dalam pembuatan objek kelas. Konstruktor dipanggil setiap kali objek kelas dibuat. Ini dapat digunakan untuk menetapkan nilai ke properti objek pada waktu pembuatan. Mungkin ada beberapa konstruktor di kelas Java dengan daftar parameter yang berbeda. Rangkaian konstruktor digunakan untuk memanggil implementasi berbeda dari konstruktor dari kelas/kelas induk yang sama pada waktu pembuatan objek.

Bagaimana chaining konstruktor diimplementasikan di Jawa?

Ada dua cara merantai konstruktor berdasarkan cara memanggil konstruktor. Mereka adalah sebagai berikut.
  • menggunakan kata kunci this() – untuk memanggil konstruktor dari kelas yang sama
  • menggunakan kata kunci super() – untuk memanggil konstruktor kelas induk
Ini dijelaskan dalam contoh berikut.Chaining Konstruktor di Jawa - 1

Contoh rangkaian konstruktor #1 – Konstruktor dirangkai menggunakan kata kunci this()

Kami telah mendeklarasikan empat konstruktor untuk DerivedClass. Satu tanpa argumen dan tiga lainnya dengan argumen yang berbeda. Di dalam setiap konstruktor, kata kunci this() digunakan untuk memanggil konstruktor berikutnya dari 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();
    }
}
Output dari eksekusiChaining Konstruktor di Jawa - 2

Contoh rangkaian konstruktor #2 – Konstruktor dirangkai menggunakan kata kunci super()

Di sini, kelas anak memanggil konstruktor kelas induk menggunakan kata kunci super() . BaseClass memiliki tiga konstruktor. Konstruktor tanpa argumen memanggil salah satu dari tiga-argumen-konstruktor dari Kelas Dasar 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 memiliki dua konstruktor, masing-masing memanggil konstruktor berbeda dari 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();
    }
}
Output dari eksekusiChaining Konstruktor di Jawa - 3

Pemanggilan konstruktor implisit vs Eksplisit

Java memiliki dua cara berbeda untuk memanggil konstruktor: Panggilan implisit dan Panggilan eksplisit.
  • Panggilan eksplisit mengacu pada pemanggilan konstruktor secara eksplisit dalam kode menggunakan this() atau super() .
  • Pemanggilan implisit mengacu pada pemanggilan konstruktor tanpa argumen dari kelas super secara implisit tanpa adanya panggilan eksplisit dari konstruktor kelas anak. Dengan kata lain, compiler menambahkan panggilan super() sebagai baris pertama dari salah satu konstruktor kelas anak jika pemrogram secara eksplisit tidak memanggil super() dalam kode.

Mengapa kita membutuhkan rangkaian konstruktor?

Ada beberapa tujuan berbeda dari memiliki rantai konstruktor di Jawa, seperti yang tercantum di bawah ini.
  • Ini adalah cara untuk mengakses properti konstruktor lain atau properti kelas induk.
  • Saat memanggil konstruktor lain, hanya satu objek yang digunakan, yaitu instance kelas saat ini. Inisialisasi terjadi di satu tempat, tetapi kami memiliki hak istimewa untuk memanggil implementasi konstruktor yang berbeda melalui rantai. Ini sangat membantu dalam manajemen memori dan pemeliharaan kode.

Kesimpulan

Dalam tutorial ini, kita membahas chaining konstruktor di Java. Konstruktor adalah segmen kode mirip metode yang dipanggil saat membuat objek. Kelas Java dapat memiliki sejumlah konstruktor dengan daftar parameter yang berbeda. Rangkaian konstruktor adalah cara praktis untuk menangani inisialisasi yang berbeda dengan satu instance kelas. Beberapa poin penting yang perlu diperhatikan dari tutorial ini tercantum di bawah ini.
  • Jika pemrogram tidak menambahkannya secara eksplisit ke kode, kompiler menambahkan konstruktor tanpa argumen publik ke kelas Java. Ini disebut konstruktor default.
  • this() dan super() harus ditulis sebagai baris pertama konstruktor.
  • this() digunakan untuk memanggil konstruktor dari kelas yang sama sementara super() digunakan untuk memanggil konstruktor dari kelas super langsung.
  • Harus ada setidaknya satu konstruktor di dalam kelas yang tidak mengandung kata kunci this() .
  • Jika tidak ditambahkan secara eksplisit, kompiler akan menambahkan panggilan super() tanpa argumen ke setiap konstruktor kelas anak. Ini akan membantu pembuatan instance kelas dengan benar.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION