מהו קונסטרוקטור ב- Java וכיצד אתה משתמש בו?

מהו קונסטרוקטור ב- Java וכיצד אתה משתמש בו?

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





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





למה בכל זאת צריך בונים?

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





public class Circle {
public double radius;
public double area() { return 3.14159 * radius * radius; }
}

לאחר מכן תוכל ליצור מופע של מחלקה זו וליצור איתה אינטראקציה:

Circle c = new Circle();
c.radius = 2;
System.out.println(c.area()); // 12.56636

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



public class Circle {
private double radius;
public double area() { return 3.14159 * radius * radius; }
public void setRadius(double r) { radius = r; }
}

כעת קוד החיוג יכול להשתמש ב- setRadius שיטה ואין צורך לדאוג מפרטי היישום שלה:

כיצד להגדיר גיפים כטפט
Circle c = new Circle();
c.setRadius(2);

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





דוגמאות לבונים פשוטים

הבונה הבסיסי ביותר הוא אחד ללא ויכוחים, שאינו עושה דבר:

public class Circle {
public Circle() {}
}

ראה גם: למד כיצד ליצור שיעורים ב- Java





אם אינך מגדיר קונסטרוקטור, Java יספק ברירת מחדל המתנהגת באותו אופן.

שימו לב לכמה דברים:

  1. שם הבנאי תואם את שם המחלקה.
  2. בונה זה משתמש ב- פּוּמְבֵּי משתנה גישה, כך שכל קוד אחר יכול לקרוא לזה.
  3. בונה אינו כולל סוג החזרה. שלא כמו שיטות אחרות, בונים אינם יכולים להחזיר ערך.

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

public class Circle {
public Circle() { radius = 1; }
}

למעגלים שנוצרו עם מחלקה זו יהיה לפחות עכשיו שטח בפועל! המתקשר עדיין יכול להשתמש setRadius () לספק רדיוס שאינו 1. אבל הבונה יכול להיות אפילו ידידותי יותר:

public class Circle {
public Circle(double r) { radius = r; }
}

עכשיו אתה יכול ליצור עיגולים עם רדיוס ספציפי כבר מלידה:

כיצד לגרום למטען לפעול
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

זהו שימוש נפוץ מאוד עבור בונים. לעתים קרובות תשתמש בהם לאתחול משתנים לערכי פרמטרים.

עומס יתר של הקונסטרוקטור

ניתן לציין יותר מבנאי אחד בהגדרת מחלקה:

public Circle() { radius = 1; }
public Circle(double r) { radius = r; }

זה נותן לקוד השיחה לבחור כיצד לבנות אובייקטים:

Circle c1 = new Circle(2);
Circle c2 = new Circle();
System.out.println(c1.area() + ', ' + c2.area()); // 12.56636, 3.14159

עם מעגל קצת יותר מורכב, אתה יכול לחקור בונים מעניינים יותר. גרסה זו שומרת את מיקומה:

public class Circle {
public double x, y, radius;
public Circle() { radius = r; }
public Circle(double r) { radius = r; }
public Circle(double x, double y, double r) {
this.x = x; this.y = y; radius = r;
}

public double area() { return 3.14159 * radius * radius; }
}

כעת תוכל ליצור מעגל ללא ארגומנטים, רדיוס בודד או קואורדינטות x ו- y לצד הרדיוס. זהו אותו סוג של עומס שעליו תומכת Java לכל שיטה.

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

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

public Circle(Circle c) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

זה יעבוד, אך הוא חוזר על קוד כלשהו שלא לצורך. מכיוון שלמחלקה Circle יש כבר קונסטרוקטור המטפל במאפיינים האישיים, תוכל לקרוא לזה במקום זאת באמצעות זֶה מילת מפתח:

public Circle(Circle c) {
this(c.x, c.y, c.radius);
}

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

קורא לבנאי ההורים

הצורה האחרת של שרשרת קונסטרוקטורים מתרחשת כאשר בונה קורא לבנאי ממעמד ההורים שלו. זה יכול להיות מפורש או משתמע. כדי לקרוא לבנאי הורים במפורש, השתמש ב סוּפֶּר מילת מפתח:

super(x, y);

תארו לעצמכם כיתה צורה המתנהגת כהורה של המעגל:

public class Shape {
double x, y;
public Shape(double _x, double _y) { x = _x; y = _y; }
}

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

public class Circle extends Shape {
double radius;
public Circle(double r) { super(0, 0); radius = r; }
public Circle(double x, double y, double r) {
super(x, y);
radius = r;
}
}

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

גישה לשינויים במבנים

בונים יכולים לכלול חתימת משנה גישה. כמו שיטות אחרות, זה מגדיר אילו סוגי מתקשרים יכולים לגשת לבנאי:

public class Test {
private static Test uniqueInstance = new Test();
private Test() { }
public static Test getInstance() {
return uniqueInstance;
}
}

זוהי דוגמה מסובכת יותר, לכן הקפד להבין אותה:

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

השתמש בבונים בג'אווה ליצירת אובייקטים

בונים חיוניים לתכנות מונחה עצמים. הם מאפשרים לך ליצור אובייקטים, וזה חיוני!

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

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל 10 מושגי Java מרכזיים שכדאי שתלמדו כשאתם מתחילים

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

קרא הבא
נושאים קשורים
  • תִכנוּת
  • ג'אווה
  • טיפים לקידוד
על הסופר בובי ג'ק(58 מאמרים פורסמו)

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

משחקים בחינם שאינם משתמשים בנתונים
עוד מאת בובי ג'ק

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה