logo

בנאים בג'אווה

  1. סוגי קונסטרוקטורים
    1. ברירת המחדל של קונסטרוקטור
    2. קונסטרוקטור בעל פרמטרים
  2. עומס יתר של קונסטרוקטור
  3. האם הקונסטרוקטור מחזיר ערך כלשהו?
  4. העתקת ערכים של אובייקט אחד לאחר
  5. האם בנאי מבצע משימות אחרות במקום האתחול

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

זהו סוג מיוחד של שיטה המשמשת לאתחול האובייקט.

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

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

ישנם שני סוגים של בנאים ב-Java: בנאי no-arg ובנאי עם פרמטרים.

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

כללים ליצירת בנאי ג'אווה

ישנם שני כללים שהוגדרו עבור הבנאי.

להשוות במחרוזת
  1. שם הבנאי חייב להיות זהה לשם המחלקה שלו
  2. לבנאי אסור שיהיה סוג החזרה מפורש
  3. בנאי Java אינו יכול להיות מופשט, סטטי, סופי ומסונכרן

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

סוגי בנאי ג'אווה

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

  1. בנאי ברירת מחדל (בנאי ללא ארגומנט)
  2. בנאי עם פרמטרים
בוני ג'אווה

Java Default Constructor

בנאי נקרא 'בנאי ברירת מחדל' כאשר אין לו שום פרמטר.

תחביר של בנאי ברירת מחדל:

 (){} 

דוגמה לבנאי ברירת מחדל

בדוגמה זו, אנו יוצרים את הבנאי no-arg במחלקה Bike. זה יופעל בזמן יצירת האובייקט.
 //Java Program to create and call a default constructor class Bike1{ //creating a default constructor Bike1(){System.out.println('Bike is created');} //main method public static void main(String args[]){ //calling a default constructor Bike1 b=new Bike1(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 Bike is created 

כלל: אם אין בנאי במחלקה, המהדר יוצר אוטומטית בנאי ברירת מחדל.

בנאי ברירת המחדל של Java

ש) מהי המטרה של בנאי ברירת מחדל?

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

דוגמה לבנאי ברירת מחדל המציג את ערכי ברירת המחדל

 //Let us see another example of default constructor //which displays the default values class Student3{ int id; String name; //method to display the value of id and name void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects Student3 s1=new Student3(); Student3 s2=new Student3(); //displaying values of the object s1.display(); s2.display(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 0 null 0 null 

הֶסבֵּר: במחלקה שלמעלה, אינך יוצר שום בנאי ולכן המהדר מספק לך בנאי ברירת מחדל. כאן מסופקים ערכי 0 ו- null על ידי בנאי ברירת המחדל.


בנאי עם פרמטרים של Java

בנאי שיש לו מספר מסוים של פרמטרים נקרא בנאי בעל פרמטרים.

למה להשתמש בבנאי עם פרמטרים?

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

דוגמה לבנאי בעל פרמטרים

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

 //Java Program to demonstrate the use of the parameterized constructor. class Student4{ int id; String name; //creating a parameterized constructor Student4(int i,String n){ id = i; name = n; } //method to display the values void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects and passing values Student4 s1 = new Student4(111,'Karan'); Student4 s2 = new Student4(222,'Aryan'); //calling method to display the values of object s1.display(); s2.display(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 111 Karan 222 Aryan 

עומס יתר של קונסטרוקטור ב-Java

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

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

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

 //Java program to overload constructors class Student5{ int id; String name; int age; //creating two arg constructor Student5(int i,String n){ id = i; name = n; } //creating three arg constructor Student5(int i,String n,int a){ id = i; name = n; age=a; } void display(){System.out.println(id+' '+name+' '+age);} public static void main(String args[]){ Student5 s1 = new Student5(111,'Karan'); Student5 s2 = new Student5(222,'Aryan',25); s1.display(); s2.display(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 111 Karan 0 222 Aryan 25 

ההבדל בין בנאי לשיטה ב-Java

ישנם הבדלים רבים בין בנאים ושיטות. הם ניתנים להלן.

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

ג'אווה קונסטרוקטורים לעומת שיטות

Java Copy Constructor

אין בנאי העתקה ב-Java. עם זאת, אנו יכולים להעתיק את הערכים מאובייקט אחד למשנהו כמו בנאי העתקה ב-C++.

ישנן דרכים רבות להעתיק את הערכים של אובייקט אחד לאחר ב-Java. הם:

  • על ידי קונסטרוקטור
  • על ידי הקצאת ערכים של אובייקט אחד לאחר
  • לפי שיטת clone() של מחלקה Object

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

 //Java program to initialize the values from one object to another object. class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 111 Karan 111 Karan 

העתקת ערכים ללא בנאי

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

 class Student7{ int id; String name; Student7(int i,String n){ id = i; name = n; } Student7(){} void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student7 s1 = new Student7(111,'Karan'); Student7 s2 = new Student7(); s2.id=s1.id; s2.name=s1.name; s1.display(); s2.display(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 111 Karan 111 Karan 

ש) האם הקונסטרוקטור מחזיר ערך כלשהו?

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

בורר שאילתות

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

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


האם יש שיעור קונסטרוקטור בג'אווה?

כן.


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

Java מספקת מחלקת Constructor שניתן להשתמש בה כדי לקבל את המידע הפנימי של בנאי במחלקה. הוא נמצא בחבילת java.lang.reflect.