CodeGym /בלוג Java /Random-HE /שרשרת קונסטרוקטור בג'אווה
John Squirrels
רָמָה
San Francisco

שרשרת קונסטרוקטור בג'אווה

פורסם בקבוצה

מה זה שרשרת קונסטרוקטור?

בנאי ב-Java הוא שיטה ספציפית המשמשת ליצירת אובייקט של מחלקה. הבנאי מופעל בכל פעם שאובייקט של המחלקה נוצר. ניתן להשתמש בו כדי להקצות ערכים למאפייני האובייקט בזמן היצירה. יכולים להיות בנאים מרובים במחלקת Java עם רשימות פרמטרים שונות. שרשור בנאים משמש כדי להפעיל יישומים שונים של בנאים של אותה מחלקה/מחלקה אב בזמן יצירת האובייקט.

כיצד מיושמת שרשור בנאים ב-Java?

ישנן שתי דרכים לשרשור בנאים על סמך איך לקרוא לבנאי. הם כדלקמן.
  • באמצעות מילת המפתח ()זה - כדי לקרוא לבנאים מאותה מחלקה
  • שימוש במילת מפתח super() - כדי לקרוא לבנאים של מחלקת האב
זה מוסבר בדוגמאות הבאות.שרשרת קונסטרוקטורים בג'אווה - 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();
    }
}
הפלט של הביצועשרשרת קונסטרוקטור בג'אווה - 2

דוגמה לשרשור בנאים מס' 2 - בנאים משורשרים באמצעות מילת המפתח super()

כאן, כיתת הילד קוראת לבנאים של מחלקת האב באמצעות מילת המפתח super() . ל-BaseClass יש שלושה בנאים. הבנאי ללא ארגומנטים קורא לאחד מבנאי שלושת הארגומנטים של BaseClass באמצעות 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 יש שני בנאים, כל אחד קורא לבנאים השונים של מחלקת העל באמצעות 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();
    }
}
הפלט של הביצועשרשרת קונסטרוקטור בג'אווה - 3

קריאת בנאי מרומז לעומת מפורש

לג'אווה יש שתי דרכים שונות לקרוא לבנאים: קריאה מרומזת וקריאה מפורשת.
  • קריאה מפורשת מתייחסת לקריאה לבנאים באופן מפורש בקוד באמצעות this() או super() .
  • קריאה מרומזת מתייחסת לקריאה של הבנאי ללא ויכוח של מחלקת העל באופן מרומז בהיעדר קריאה מפורשת כזו מבנאי מחלקות הילד. במילים אחרות, המהדר מוסיף את הקריאה super() כשורה הראשונה של כל אחד מהבנאים של מחלקות הילד אם המתכנת לא קורא במפורש super() בקוד.

למה אנחנו צריכים שרשור קונסטרוקטור?

ישנן מספר מטרות שונות ליצירת שרשרת בנאים ב-Java, כמפורט להלן.
  • זוהי דרך לגשת למאפיינים של בנאים אחרים או למאפיינים של מחלקות אב.
  • בזמן קריאה לבנאים אחרים, נעשה שימוש רק באובייקט אחד, שהוא המופע הנוכחי של המחלקה. האתחול מתרחש במקום אחד, אבל יש לנו את הפריבילגיה לקרוא למימושי בנאים שונים דרך שרשרת. זה עוזר מאוד בניהול זיכרון ותחזוקת קוד.

סיכום

במדריך זה, דנו בשרשור בנאים ב-Java. קונסטרוקטורים הם מקטעי קוד דמויי שיטה המופעלים בזמן יצירת אובייקטים. למחלקה של Java יכולה להיות כל מספר של בנאים עם רשימות פרמטרים שונות. שרשרת קונסטרוקטור היא דרך שימושית לטיפול באתחולים שונים עם מופע אחד של מחלקה. כמה נקודות חשובות שיש לשים לב מהמדריך הזה מפורטות להלן.
  • אם המתכנת לא מוסיף את זה במפורש לקוד, המהדר מוסיף בנאי ציבורי ללא ויכוח למחלקה של Java. זה נקרא בנאי ברירת המחדל.
  • this() ו- super() צריכים להיכתב כשורה הראשונה של הבנאי.
  • this() משמש לקריאה לבנאים מאותה מחלקה ואילו super() משמש לקריאה לבנאים של מחלקת העל המיידית.
  • צריך להיות בנאי אחד לפחות בתוך המחלקה שלא מכיל את מילת המפתח () הזו .
  • אם לא מתווסף במפורש, המהדר מוסיף קריאת super() ללא ויכוח לכל בנאי מחלקות ילד. זה יעזור ליצירת שיעורים בצורה נכונה.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION