CodeGym /Java Blogu /Rastgele /Java'da Yapıcı Zincirleme
John Squirrels
Seviye
San Francisco

Java'da Yapıcı Zincirleme

grupta yayınlandı

Yapıcı Zincirleme nedir?

Java'da bir yapıcı, bir sınıfın nesne oluşturulmasında kullanılan özel bir yöntemdir. Yapıcı, sınıfın bir nesnesi her oluşturulduğunda çağrılır. Oluşturma sırasında nesnenin özelliklerine değer atamak için kullanılabilir. Bir Java sınıfında farklı parametre listelerine sahip birden fazla kurucu olabilir. Yapıcı zincirleme, nesne oluşturma zamanında aynı sınıf/ana sınıfın kurucularının farklı uygulamalarını çağırmak için kullanılır.

Yapıcı zincirleme Java'da nasıl uygulanır?

Yapıcıyı nasıl çağıracağınıza bağlı olarak, yapıcıları zincirlemenin iki yolu vardır. Bunlar aşağıdaki gibidir.
  • this() anahtar sözcüğünü kullanarak – aynı sınıftaki yapıcıları çağırmak için
  • super() anahtar sözcüğünü kullanarak - üst sınıfın kurucularını çağırmak için
Bu, aşağıdaki örneklerde açıklanmaktadır.Java'da Yapıcı Zincirleme - 1

Yapıcı zincirleme örneği #1 – Yapıcılar this() anahtar kelimesi kullanılarak zincirlenir

DerivedClass için dört kurucu tanımladık. Biri argümansız, diğer üçü farklı argümanlı. Her kurucunun içinde, this() anahtar sözcüğü aynı sınıfın bir sonraki kurucusunu çağırmak için kullanılır.

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();
    }
}
Yürütmenin çıktısıJava'da Yapıcı Zincirleme - 2

Yapıcı zincirleme örneği #2 – Yapıcılar, super() anahtar kelimesi kullanılarak zincirlenir

Burada alt sınıf, super() anahtar sözcüğünü kullanarak üst sınıfın kurucularını çağırır . BaseClass'ın üç kurucusu vardır. Hiçbir argümanı olmayan kurucu, this() kullanarak BaseClass'ın üç argümanlı kurucusundan birini çağırır .

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, her biri süper sınıfın farklı kurucularını super() kullanarak çağıran iki kurucuya sahiptir .

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();
    }
}
Yürütmenin çıktısıJava'da Yapıcı Zincirleme - 3

Örtük ve Açık yapıcı çağrısı

Java'nın kurucuları çağırmak için iki farklı yolu vardır: Örtük çağrı ve Açık çağrı.
  • Açık arama, this() veya super() kullanılarak kodda açıkça yapıcıların çağrılması anlamına gelir .
  • Örtülü çağrı, alt sınıf yapıcısından böyle açık bir çağrı olmadığında, süper sınıfın bağımsız değişkensiz kurucusunun dolaylı olarak çağrılması anlamına gelir. Başka bir deyişle, programcı kodda açıkça super() öğesini çağırmazsa, derleyici super() çağrısını alt sınıfların yapıcılarından herhangi birinin ilk satırı olarak ekler.

Yapıcı zincirine neden ihtiyacımız var?

Aşağıda listelendiği gibi, Java'da bir oluşturucu zincirine sahip olmanın birkaç farklı amacı vardır.
  • Diğer yapıcıların özelliklerine veya üst sınıfların özelliklerine erişmenin bir yoludur.
  • Diğer oluşturucular çağrılırken, sınıfın geçerli örneği olan yalnızca bir nesne kullanılıyor. Başlatma tek bir yerde gerçekleşir, ancak bir zincir aracılığıyla farklı yapıcı uygulamalarını çağırma ayrıcalığına sahibiz. Bu, bellek yönetimi ve kod bakımında büyük ölçüde yardımcı olur.

Çözüm

Bu öğreticide, Java'da yapıcı zincirlemeyi tartıştık. Yapıcılar, nesneler oluşturulurken çağrılan yöntem benzeri kod parçalarıdır. Bir Java sınıfı, farklı parametre listelerine sahip herhangi bir sayıda oluşturucuya sahip olabilir. Yapıcı zincirleme, bir sınıfın bir örneğiyle farklı başlatmaları gerçekleştirmenin kullanışlı bir yoludur. Bu eğitimde dikkat edilmesi gereken bazı önemli noktalar aşağıda listelenmiştir.
  • Programcı bunu açık bir şekilde koda eklemezse, derleyici Java sınıfına ortak bağımsız değişken olmayan bir oluşturucu ekler. Buna varsayılan kurucu denir.
  • this() ve super() yapıcının ilk satırı olarak yazılmalıdır.
  • this() aynı sınıftaki yapıcıları çağırmak için kullanılırken, super() doğrudan süper sınıfın yapıcılarını çağırmak için kullanılır.
  • Sınıf içinde this() anahtar sözcüğünü içermeyen en az bir kurucu bulunmalıdır .
  • Açıkça eklenmezse, derleyici her alt sınıf yapıcısına bağımsız değişkensiz bir super() çağrısı ekler. Bu, sınıfların doğru bir şekilde somutlaştırılmasına yardımcı olacaktır.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION