הרעיון המרכזי של המעמד המופשט טמון בתזה הבאה: לפעמים לא נדרשים שיעורים מוכנים, אלא בצורה "גולמית". החסר כזה לא ניתן להשתמש ישירות (מופעלות).
מהו המעמד המופשט בג'אווה?
Рассмотрим другой пример.יש מחלקה מופשטת של לוח שנה ב- Java בחבילה Java.util. זה אינו מיישם יומן מסוים, אשר משמש, למשל, במערב ובמזרח אירופה, סין, צפון קוריאה, תאילנד, וכו 'אבל יש הרבה תכונות שימושיות, כגון הוספה כמה ימים עד תאריך ספציפי: .. פונקציות אלה נדרשות עבור כל יישום לוח שנה. לא ניתן ליצור מופע ממחלקה מופשטת.
שיעורים מופשטים, שיטות Java מופשטות
נניח שאתה צריך לפתח קצת גרפיאלמנטים, למשל, צורות גיאומטריות: מעגל, מלבן, כוכב וכו '. ויש מיכל שמושך אותם. לכל רכיב יש מראה שונה, ולכן השיטה המתאימה (תן לזה להיקרא צבע) מיושמת אחרת. עם זאת, לכל רכיב יש תכונות נפוצות רבות: הדמויות חייבות להיות רשומות במלבן, הן עשויות להיות בצבע, להיות גלוי ובלתי נראה, וכו 'כלומר, אתה צריך ליצור הכיתה האב עבור כל הדמויות האלה, שבו כל רכיב יירש מאפיינים משותפים.
אם בכיתה יש שיטות מופשטות, אזהכיתה מופשטת. תקציר מילת המפתח ממוקם לפני מילת הכיתה, וגם בכותרת השיטה. יש להציב נקודה-פסיק אחרי הכותרת של שיטה כזו. בג'אווה, מחלקה מופשטת אינה יכולה להתקיים. אם ברצוננו לאסור את יצירתם, גם אם למעמד אין שיטות מופשטות, אז ניתן להכריז על המעמד כמופשט. אבל אם בכיתה יש לפחות שיטה מופשטת אחת, אז הכיתה חייבת להיות מופשטת. אי אפשר שכיתה תהיה מופשטת, וסופית, וגם שיטה. השיטה לא יכולה להיות מופשטת, פרטית, סטטית, מקומית. על מנת שהכיתות שעברו בירושה יוכרזו כלא מופשטות ומיידישות, עליהן ליישם את כל השיטות המופשטות של ההורה. הכיתה עצמה יכולה להשתמש בשיטות המופשטות שלה.
דוגמה:
- מחלקה מופשטת A Class {
- שיטת חלל מופשטת ציבורית (int a);
- }
- מחלקה BClass מתרחבת AClass {
- שיטת הריק הציבורי (int a) {
- // גוף
- }
משתנים מסוג הכיתות המופשטות מותרים. הם יכולים להתייחס לצאצא לא מופשט ממעמד זה או להיות אפס.
ממשקי Java - חלופה לירושה מרובה
אין ירושה מרובה בג'אווה כי אז נוצרות בעיות מסוימות. מחלקה אינה יכולה לרשת ממספר כיתות. אבל זה יכול ליישם ממשקים מרובים.
ממשקי Java ושיעורים מופשטים - מושגיםדומה אך לא אותו דבר. ניתן להכריז על הממשק כציבורי, ואז הוא זמין לכולם, או שאתה יכול להשמיט את השינוי הציבורי, ואז הממשק זמין רק בחבילה שלו. מילת המפתח המופשטת אינה נדרשת מכיוון שהממשק כבר מופשט, אך ניתן לציין זאת.
הכרזת ממשק
זה מתחיל בכותרת ועשוי ללכת ראשוןמילת המפתח הציבורית ואחריה מילת הממשק. ואז המילה משתרעת וספירת הממשקים שמהם עוברת הירושה יכולה להגיע. אין לחזור על כך כאן, ואי אפשר גם שיחסי ירושה יוצרים קשר מעגלי. ואז מגיע גוף הממשק, סגור בסוגריים מתולתלים. אלמנטים מוכרזים בגוף הממשק: שדות קבועים ושיטות מופשטות. כל השדות הם סטטיים סופיים ציבוריים - כל השינויים הללו הם אופציונליים. כל השיטות נחשבות כמופשטות ציבוריות - ניתן גם לציין את השינויים הללו. עכשיו נאמר מספיק על ההבדל בין מחלקה מופשטת לממשק ג'אווה.
- ממשק ציבורי AI מרחיב B, C, D {
- // גוף
- }
כדי להכריז על כיתה שיירש ממשק, השתמש במילת המפתח ליישומים:
- מחלקה AC מיישמת BI, CI, DI {}
כלומר, אם שם ממשק מוגדר לאחר יישומים בהצהרת מחלקה, אז המחלקה מיישמת אותו. יורשי המעמד הזה יורשים את יסודותיו, ולכן הם מיישמים אותו גם הם.
משתנים ממשק מותרים גם כן.הם יכולים להתייחס לסוג המחלקה המיישמת ממשק זה, או null. למשתנים כאלה יש את כל האלמנטים של מחלקת האובייקט, מכיוון שהאובייקטים נגזרים ממחלקות, ואלה, בתורם, עוברים בירושה ממעמד האובייקט.
במאמר זה בדקנו כמה מרכיבי מודל האובייקט ג'אווה - שיעורים מופשטים, שיטות מופשטות, ממשקים.