logo

ג'אווה סטטי קונסטרוקטור

ב-Java, בנאי אסור להיות מופשט, סופי, סטטי, מקורי או strictfp. אז, אין סטטי בנאי ב-Java .

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

שינה ב-javascript

כמה מאפיינים מרכזיים של הבנאי הסטטי הם כדלקמן:

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

בואו נבין מדוע הבנאי הסטטי אינו מותר ב-Java:

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

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

בואו נבין את זה עם דוגמה. שקול את הדוגמה הבאה:

ספרות רומיות 1 100

StaticConstructorDemo.java:

 public class StaticConstructorDemo { //Declaring a static constructor public static StaticConstructorDemo() { System.out.println('Static Constructor of the class'); } public static void main(String args[]) { // Creating a constructor object to invoke it StaticConstructorDemo obj = new StaticConstructorDemo(); } } 

תְפוּקָה:

 Exception in thread 'main' java.lang.Error: Unresolved compilation problem: Illegal modifier for the constructor in type StaticConstructorDemo; only public, protected & private are permitted. at StaticConstructorDemo.(StaticConstructorDemo.java:4) at StaticConstructorDemo.main(StaticConstructorDemo.java:13) 

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

מדוע Java לא תומך בבנאי סטטי?

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

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

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

אובייקט בתכנות ג'אווה

בואו נבין את זה עם דוגמה:

מחרוזת ל-int java

StaticConstructorExample.java:

 public class StaticConstructorExample { public StaticConstructorExample() { /*Constructor of this class*/ System.out.println('In StaticConstructorExample Class'); } } 

StaticConstructorChild.java:

 public class StaticConstructorChild extends StaticConstructorExample { public StaticConstructorChild() { System.out.println('In StaticConstructorChild class'); } public void display() { System.out.println('Method of StaticConstructorChild class'); } public static void main(String args[]) { StaticConstructorChild obj = new StaticConstructorChild(); obj.display(); } } 

תְפוּקָה:

 In StaticConstructorExample Class In StaticConstructorChild class Method of StaticConstructorChild class 

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

זו הסיבה מדוע איננו יכולים ליצור בנאי סטטי ב-Java.

סיכום:

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