כיצד ליישם קונסטרוקטור פרטי בג'אווה



מאמר זה יספק לך ידע מפורט ומקיף על Constructor פרטי ב- Java ושימוש בו בדוגמאות.

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

מבוא ל- Constructor בג'אווה

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





ברור שלא.

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



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

קונסטרוקטור פרטי בג

כיתת סינגלטון

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



חייבת להיות דרך אחרת לחלץ את המופע של המחלקה ושיטת החזרה להחזרת התוצאה. להלן איור הולם של אותו דבר. הצילום הראשון מתאר את התוצאה האפשרית כאשר הערך של 'a.x' שווה ל- 20 והערך של 'b.x' מביא גם ל- 20. בקוד, בעוד שאנו מגדירים את המחלקה הפרטית של יחיד, אי אפשר לגשת לבוניו מחוץ למחלקה.

ערך a.x = 20

ערך b.x = 20

// תוכנית Java להדגמת הטמעת דפוס Singleton // באמצעות קונסטרוקטורים פרטיים. ייבא java.io. * מחלקה MySingleton {מופע סטטי של MySingleton = null public int x = 10 // לא ניתן לגשת לבנאי פרטי מחוץ למחלקה MySingleton פרטית () {} // כדי לספק למשתמשים מופעים סטטיים MySingleton ציבוריים. getInstance () {if (מופע == null) מופע = MySingleton חדש () מופע חוזר}} // מחלקת נהג ראשי {public main static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('Value of ax =' + ax) System.out.println ('Value of bx =' + bx)}}

ההשפעה של קונסטרוקטור פרטי בג'אווה

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

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

כדי להשתמש בספירות, שהן בטיחותיות לסוג.

שרשרת קונסטרוקטור פנימית

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

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

חבילה com.journaldev.constructor מחלקה ציבורית עובד {private int id private שם מחרוזת עובד עובד () {this ('John Doe', 999) System.out.println ('ברירת המחדל של עובד נוצר')} עובד ציבורי (int i) { זה ('ג'ון דו', i) System.out.println ('עובד נוצר בשם ברירת מחדל')} עובד ציבורי (מחרוזת s, int i) {this.id = i this.name = s System.out.println ( 'עובד נוצר')} ראשי ריק סטטי ציבורי (מחרוזת [] טענות) {עובד emp = עובד חדש () System.out.println (emp) עובד emp1 = עובד חדש (10) System.out.println (emp1) עובד emp2 = עובד חדש ('Pankaj', 20) System.out.println (emp2)} @ עקירה ציבורית מחרוזת toString () {return 'ID =' + id + ', Name =' + name} public int getId () {id return } public void setId (int id) {this.id = id} public String getName () {return name} public void setName (שם מחרוזת) {this.name = name}}

דפוס עיצוב כיתת סינגלטון

התפריט הנפתח ב angularjs
  • חבר ברמה כיתתית (שיטת אתחול להוט)

  1. ראשית, בצע מופע סטטי קבוע פרטי של מעמד יחיד.

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

  3. ניתן לסמן חבר סטטי כציבור לגשת ישירות למופע סטטי קבוע.

  4. כיתת ה- singleton משתנה ממעמד Java רגיל מבחינת אינסטנטציה. בשיעור רגיל משתמשים בבנאי אך בשיעור סינגלטון אנו משתמשים בשיטת get Instance ().

  • חבר ברמה כיתתית (שיטת אתחול עצל):

  1. ראשית, ליזום קונסטרוקטור כפרטי.

  2. לאחר מכן צור מופע סטטי פרטי של מעמד יחיד זה. זכור שלא להפעיל אותו.

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

  • החבר ברמה הכיתתית (אתחול עצל בשיטת נעילה כפולה):

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

  • שימוש במחלקה פנימית מקוננת (שיטת עומס עצל):

כאן הוא מבוסס על מפרט שפה של Java (JLS). המכונה הווירטואלית של Java טוענת חברי נתונים סטטיים רק לפי דרישה. לפיכך, שיעור ה- Singleton נטען תחילה על ידי ה- JVM. לפיכך, אין חבר נתונים סטטי בכיתה

מחזיק הכיתה של סינגלטון אינו טוען SINGLE_INSTANCE. כאשר אנו קוראים לשיטת getIntance, רק זה קורה. JLS מבטיחה את ביצוע האתחול של הכיתה. הוראה לסנכרון מפורש בשיטת getInstance () סטטית לטעינה ולאתחול. כאשר האתחול יוצר את המשתנה הסטטי SINGLE_INSTANCE באופן רציף, כל הקריאות המקבילות של getInstance () יחזרו זהות ללא תקרת סינכרון.

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

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

בדוק את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה מיועד לסטודנטים ואנשי מקצוע שרוצים להיות מפתח Java. הקורס נועד לתת לך יתרון לתכנות ג'אווה ולהכשיר אותך למושגי ג'אווה מרכזיים ומתקדמים יחד עם מסגרות Java שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת בפרק ההערות בבלוג 'Java Tutorial' ונחזור אליך בהקדם האפשרי.