logo

מה זה שרשור בנאים ב-Java?

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

בַּנַאִי

ב Java , בנאי זהה לשיטה אבל ההבדל היחיד הוא שלבנאי יש אותו שם כמו שם המחלקה. הוא משמש ליצירת מופע של המחלקה. זה נקרא אוטומטית כאשר אנו יוצרים אובייקט של המחלקה. אין לו סוג החזרה. זכור שקונסטרוקטור לא יכול להיות תַקצִיר , סופי , מסונכרן , ו סטָטִי . אנחנו לא יכולים לעקוף בנאי.

ישנם שני סוגים של בנאים ב-Java:

  • קונסטרוקטור ברירת מחדל (ידוע גם בתור בנאי ללא ויכוח)
  • קונסטרוקטור בעל פרמטרים

שרשרת קונסטרוקטורים

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

אנו יכולים להשיג שרשור בנאים בשתי דרכים:

מיון heapify
    בתוך אותה כיתה:אם הבנאים שייכים לאותה מחלקה, אנו משתמשים זֶה ממחלקת הבסיס:אם הבנאי שייך למחלקות שונות (כיתות הורה וילד), אנו משתמשים ב- סוּפֶּר מילת מפתח כדי לקרוא לבנאי ממחלקת הבסיס.

זכור ששינוי הסדר של הבנאי אינו משפיע על הפלט.

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

הצורך של שרשרת קונסטרוקטורים

נניח שיש חמש משימות לביצוע. ישנן שתי דרכים לבצע משימות אלו, או ליישם את כל המשימות בבנאי בודד או ליצור משימות נפרדות בבנאי בודד.

על ידי שימוש במנגנון השרשור של הבנאים, נוכל ליישם משימות מרובות בבנאי יחיד. לכן, בכל פעם שאנו מתמודדים עם סוגים כאלה של בעיות, עלינו להשתמש בשרשור בנאים. אנו יכולים להפוך את התוכנית לקריאה ומובנת יותר על ידי שימוש ב-constructor chaining.

Java end for loop

כללים של שרשרת קונסטרוקטורים

  • ביטוי שמשתמש זֶה מילת המפתח חייבת להיות השורה הראשונה של הבנאי.
  • להזמיןלא משנה בשרשור בנאים.
  • חייב להתקיים לפחות בנאי אחד שאינו משתמש זֶה

Constructor Calling טופס Constructor אחר

הקריאה של הבנאי יכולה להתבצע בשתי דרכים:

    על ידי שימוש במילת המפתח () זו:הוא משמש כאשר אנו רוצים לקרוא לבנאי המחלקה הנוכחית בתוך אותה מחלקה.על ידי שימוש במילת מפתח super():הוא משמש כאשר אנו רוצים לקרוא לבנאי מחלקת העל ממחלקת הבסיס.

הערה: באותו בלוק בנאי, איננו יכולים להשתמש ב-() זה וב-סופר() בו-זמנית.

בואו נבין את שני המושגים הללו באמצעות תוכניות Java.

דוגמאות לשרשרת קונסטרוקטורים

מתקשר ל-Current Class Constructor

אנו משתמשים זֶה() מילת מפתח אם ברצוננו לקרוא לבנאי המחלקה הנוכחית בתוך אותה מחלקה. השימוש ב() זה הוא חובה מכיוון JVM אף פעם לא לשים את זה אוטומטית כמו סוּפֶּר() מילת מפתח. שימו לב ש-() זה חייב להיות השורה הראשונה של הבנאי. חייב להתקיים לפחות בנאי אחד בלעדיו מילת מפתח זו(). .

תחביר:

 this(); or this(parameters list); 

לדוגמה:

 this(); this('Javatpoint'); 

בואו ניצור תוכנית Java ונקרא לבנאי המחלקה הנוכחי.

ConstructorChain.java

 public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } } 

תְפוּקָה:

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

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

 ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println() 

מתקשר לסופר קלאס קונסטרוקטור

לפעמים, אנחנו צריכים לקרוא לבנאי superclass (מחלקה אב) ממחלקת הילד (מחלקה נגזרת) במקרים כאלה, אנו משתמשים במילת המפתח super() בבנאי המחלקה הנגזרת. זה אופציונלי לכתוב super() כי JVM מציב אותו אוטומטית. זה תמיד צריך לכתוב בשורה הראשונה. נקבל שגיאת תחביר אם ננסה לקרוא לבנאי מחלקה-על בכיתה הילד.

מחרוזת java concat

תחביר:

 super(); or super(Parameter List); 

סוּפֶּר(): זה קורא לבנאי ללא ויכוח או ברירת המחדל של מחלקת העל.

הצג אפליקציות נסתרות

super(פרמטרים): הוא מפעיל את הבנאי בעל הפרמטרים של מחלקת העל.

זכור שלא ניתן להוריש את בנאי מחלקת העל בתת המחלקה. ניתן לקרוא לו מבנאי המשנה באמצעות מילת המפתח סופר.

בואו ניצור תוכנית Java ונטמיע שרשור בנאים במחלקה שעברה בירושה.

ConstructorChaining.java

 //parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } } 

תְפוּקָה:

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