הבדלים בין Class ו- Abstract בממשק Java ב- Java הפרש בין

Anonim

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

-> ->

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

הבדלים

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

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

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

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

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

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

סיכום

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

  1. לא ניתן להשתמש בקוד יישום בממשקים בזמן שניתן להשתמש בו בכיתה מופשטת.

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

  3. מחלקה מופשטת תירש אוטומטית את מחלקה האובייקט, אבל זה לא אפשרי בממשק.

  4. בכיתה אבסטרקט הוא מהיר יותר מאשר ממשק ביישום.