JavaRush /בלוג Java /Random-HE /משנה או איך להטיל קסמים בעולם ג'אווה
Petr Gorskin
רָמָה
Москва

משנה או איך להטיל קסמים בעולם ג'אווה

פורסם בקבוצה
יום גלקטי טוב, חברים! זהו כתב היד הבין-פלנטרי הראשון שלי, ומכיוון שאני מהנדס, ניתן לעשות את הפרשנות של כמה מושגים בשפה מחוץ לכדור הארץ.
משנה או איך להטיל קסמים בעולם ג'אווה - 1
הקדמה לדעתי, ג'אווה היא כמו מסדרון אינסופי עם דלתות (חבילה). מאחורי כל אחת מהדלתות הללו יש מקום פנוי וארון תיקים בו מאוחסן הר של מגילות קסומות עם הוראות (שיעורים) ליצירת חפצים. כל מגילה מתארת ​​קבוצה של מאפיינים (משתנים) ויכולות (שיטות) - פעולות (שדות) המבוצעות על המחלקה עצמה או על אובייקט שהורכב על בסיסה. בשלב זה, בואו נדמיין את עצמנו כקוסמים וננסה ליצור הוראה (כיתה) חדשה לגמרי. אז: משנה או איך להטיל קסמים בעולם הג'אווה - 2בואו נשתה את סם החוכמה (למדו את היסודות) ונתחיל לכתוב הוראות. מגיני גישה ושאינם גישה הבה נדמיין שכל הוראה ואובייקט שנוצרו על בסיסה, כמו גם המאפיינים והיכולות שלו, יהיו בתחילה קסומים בקסם, כלומר. יוקצו להם סטים ספציפיים של שינויים. בואו ננסה ליצור מדריך על קסמים אפשריים.
  1. נדרש משנה הגישה , המתאר את הנגישות של מחלקה, אובייקט או שדה: בהיעדרו, ה-JVM (זהו מקור כזה לקסם אוניברסלי) מקצה אוטומטית מזהה ברירת מחדל לחבילה.

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

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

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

  3. השינוי הסופי מציין למעשה למשתנה שהוא קבוע. לשיטות - שלא ניתן לעקוף אותן במהלך ההורשה, אבל עבור מחלקות זו אינדיקציה שלא ניתן להוריש ממנה (בלתי ניתן לשינוי).

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

  4. השינוי המופשט חל רק על מתודות ומחלקות . שיטה מופשטת היא שיטה ללא מימוש (גוף).

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

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

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

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

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

    * - כתבתי את המאמר הזה ברמה 17 ועד אז לא תוארה סדרה כתהליך, אז במקום העתק-הדבק, אני ממליץ לך ללמוד את זה בעצמך במידת הצורך.

צמדי משנה מתנגשים בנוסף ליישום של מתנים על מחלקות, אובייקטים ושדות שונים, קיים גם המושג של זוגות מתנגשים. נניח שלהקסים קסדה עם חוזק הופך אותה לכבדה, ויחד עם זאת רוצים להקסים אותה כדי שתהיה קלה. אחד לא מתאים לשני.
  1. סופי ונדיף - כשמדובר במשתנים, לא נוכל לומר בו זמנית שהוא סופי (קבוע) ושיש לכמה שרשורים את היכולת לשנות אותו... הרי הוא קבוע, ובכל רגע שרשור יכול לקרוא אותו , אבל אף חוט אחד לא יכול לשנות את הקבוע (מועצת הפיקוח האוניברסלית לא תאפשר זאת).
  2. סופי ומופשט - מחלקות ושיטות אינן יכולות להיות מופשטות (מה שברוב המקרים מרמז על הצורך להבהיר אותן ליישום) והן סופיות, כלומר. בלתי ניתן לשינוי. מסתבר שההוראות אומרות איך ליצור קסדה עמידה טובה מכל חומר (חלק מופשט), אבל בשביל זה אסור שיהיו בה חורים (לא ניתן לשנות את החלק החובה האחרון).
  3. מופשט וסטטי - שיטה מופשטת לא יכולה להיות סטטית או מסונכרנת בו זמנית. שיטה מופשטת סטטית לא הגיונית, כי לא רק שהיא לא עושה כלום, אלא שהיא גם שייכת למחלקה שלמה - התוצאה היא דבר חסר תועלת.
  4. מופשט ומסונכרן - מה הטעם לסנכרן עבודה עם שיטה שלא עושה כלום?
לסיכום אז, התיאור של השינויים הסתיים, כל הקונפליקטים הוסדרו ועכשיו אתה יכול לאחד את התוצאה עם דף רמאות - דיאגרמת קסם: משנה או איך להטיל קסמים בעולם ג'אווה - 3לסיכום, אני רוצה לומר שכתיבת המאמר הזה הייתה הגשמת הרצון שלי ללמוד משנים. האם החוויה מוצלחת או לא זה תלוי בך לשפוט. אני מחכה להצעות שלכם לשיפור/תיקון שלו ואולי ביחד, נהפוך אותו למדריך שימושי מאוד עבור שחקני ג'אווה מתחילים.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION