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

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

ההבדל בין המחלקה המופשטת הקיימת לממשק ה- Java

מה זה שיעור מופשט בג'אווה?

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

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

מה זה ממשק?

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

ההבדל בין המחלקה המופשטת הקיימת לממשק ה- Java

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

כיתוב מופשט וממשק ג'אווה: טבלת השוואה

סיכום המחלקה והממשק המופשטים בג'אווה

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

הפניות

  • בלוך, ג'ושוע. מדריך שפת תכנות Java. בוסטון: אדיסון-ווסלי, 2001. הדפס
  • בלוך, ג'ושוע. מדריך שפת תכנות Java. בוסטון: אדיסון-ווסלי, 2001. הדפס
  • פלנגן, דייויד. אז ג'אווה. סבסטופול: מדידת מדילי, 1996. הדפס
  • אקל. חושבת בג'אווה. דלהי: פירסון חינוך הודו, 2006. הדפס
  • "זיכוי תמונה: https://stackoverflow.com/questions/1913098/what-is-the-differference-between-an-interface-and-abstract-class"