CodeGym /وبلاگ جاوا /Random-FA /زنجیره سازی سازنده در جاوا
John Squirrels
مرحله
San Francisco

زنجیره سازی سازنده در جاوا

در گروه منتشر شد

Constructor Chaining چیست؟

سازنده در جاوا روش خاصی است که در ایجاد شیء یک کلاس استفاده می شود. سازنده هر بار که یک شی از کلاس ایجاد می شود فراخوانی می شود. می توان از آن برای اختصاص مقادیر به خصوصیات شی در زمان ایجاد استفاده کرد. می تواند سازنده های متعددی در یک کلاس جاوا با لیست های پارامترهای مختلف وجود داشته باشد. زنجیره سازی سازنده برای فراخوانی پیاده سازی های مختلف سازنده های یک کلاس/کلاس والد در زمان ایجاد شی استفاده می شود.

چگونه زنجیره سازی سازنده در جاوا پیاده سازی می شود؟

دو راه برای زنجیره‌بندی سازنده‌ها بر اساس نحوه فراخوانی سازنده وجود دارد. به شرح زیر می باشند.
  • با استفاده از این کلمه کلیدی () - برای فراخوانی سازنده های یک کلاس
  • با استفاده از کلمه کلیدی super() – برای فراخوانی سازنده های کلاس والد
این در مثال های زیر توضیح داده شده است.Constructor Chaining در جاوا - 1

مثال شماره 1 زنجیره سازی سازنده - سازندگان با استفاده از این کلمه کلیدی () زنجیره می شوند

ما چهار سازنده برای DerivedClass اعلام کرده ایم. یکی بدون استدلال و سه تای دیگر با استدلال های متفاوت. در داخل هر سازنده، این کلمه کلیدی () برای فراخوانی سازنده بعدی همان کلاس استفاده می شود.
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();
    }
}
خروجی اجراConstructor Chaining در جاوا - 2

مثال شماره 2 زنجیره سازی سازنده - سازندگان با استفاده از کلمه کلیدی super() زنجیره می شوند

در اینجا، کلاس فرزند سازنده های کلاس والد را با استفاده از کلمه کلیدی super() فراخوانی می کند . BaseClass دارای سه سازنده است. سازنده بدون آرگومان یکی از سازنده های سه آرگومان BaseClass را با استفاده از این() فراخوانی می کند .
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 دو سازنده دارد که هر کدام سازنده های مختلف کلاس super را با استفاده از 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();
    }
}
خروجی اجراConstructor Chaining در جاوا - 3

فراخوانی سازنده ضمنی در مقابل صریح

جاوا دو روش مختلف برای فراخوانی سازنده ها دارد: فراخوانی ضمنی و فراخوانی صریح.
  • فراخوانی صریح به فراخوانی سازنده ها به طور صریح در کد با استفاده از this() یا super() اشاره دارد .
  • فراخوانی ضمنی به فراخوانی سازنده بدون آرگومان کلاس فوق به طور ضمنی در صورت عدم وجود چنین فراخوانی صریح از سازنده کلاس فرزند اشاره دارد. به عبارت دیگر، کامپایلر فراخوانی super() را به عنوان اولین خط هر یک از سازنده های کلاس های فرزند اضافه می کند، اگر برنامه نویس به صراحت ()super را در کد فراخوانی نکند.

چرا به زنجیره سازی سازنده نیاز داریم؟

چندین هدف مختلف از داشتن یک زنجیره سازنده در جاوا وجود دارد که در زیر ذکر شده است.
  • این راهی برای دسترسی به خصوصیات سازنده های دیگر یا ویژگی های کلاس های والد است.
  • هنگام فراخوانی سازنده های دیگر، تنها یک شیء استفاده می شود که نمونه فعلی کلاس است. مقداردهی اولیه در یک مکان اتفاق می افتد، اما ما این امتیاز را داریم که پیاده سازی های سازنده مختلف را از طریق یک زنجیره فراخوانی کنیم. این به مدیریت حافظه و نگهداری کد کمک زیادی می کند.

نتیجه

در این آموزش به بحث زنجیره سازی سازنده در جاوا پرداختیم. سازنده ها بخش های کد روش مانندی هستند که هنگام ایجاد اشیا فراخوانی می شوند. یک کلاس جاوا می تواند هر تعداد سازنده با لیست پارامترهای مختلف داشته باشد. زنجیره سازی سازنده روشی مفید برای مدیریت اولیه سازی های مختلف با یک نمونه از یک کلاس است. برخی از نکات مهمی که در این آموزش باید به آنها اشاره شود در زیر ذکر شده است.
  • اگر برنامه نویس آن را به طور واضح به کد اضافه نکند، کامپایلر یک سازنده بدون آرگومان عمومی به کلاس جاوا اضافه می کند. این سازنده پیش فرض نامیده می شود.
  • this() و super() باید به عنوان اولین خط سازنده نوشته شوند.
  • this() برای فراخوانی سازنده های یک کلاس استفاده می شود در حالی که super() برای فراخوانی سازنده های کلاس super فوری استفاده می شود.
  • حداقل باید یک سازنده در کلاس وجود داشته باشد که حاوی این کلمه کلیدی () نباشد .
  • اگر به صراحت اضافه نشود، کامپایلر یک فراخوانی () بدون آرگومان را به هر سازنده کلاس فرزند اضافه می کند. این به نمونه سازی صحیح کلاس ها کمک می کند.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION