ההבדל בין Class מופשט לממשק ב- C # ההבדל בין

Anonim

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

-> ->

מהו שיעור מופשט?

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

-> ->

מהו ממשק?

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

- <->

שיעור מופשט מול ממשק: הבדל בין מחלקה מופשטת לממשק ב- C #

  1. מורשת מרובה - מחלקה יכולה להשתמש רק בכיתה אחת מופשטת, ולכן ירושה מרובה אינה נתמכת. ממשק, לעומת זאת, יכול לתמוך ירושה מרובים, כלומר בכיתה יכול לרשת מספר כלשהו של ירושות.
  2. הגדרה מתוך כיתה וממשק תקציר ב- C # - מחלקה מופשטת היא סוג מיוחד של הכיתה אשר עשוי להכיל הגדרה ללא יישום. לוגיקת היישום מסופקת על ידי השיעורים הנגזרים. זה יכול להיות מופשט, כמו גם שיטות לא מופשטים.ממשק, לעומת זאת, הוא רק דפוס אשר לא יכול לעשות שום דבר. מבחינה טכנית, זה רק קליפה ריקה.
  3. יישום - מעמד מופשט יכול להכיל הן את ההגדרה והן את יישומה. זה מעמד לא שלם אשר לא יכול להיות מופת. ממשק יכול לקבל רק את החתימה של הפונקציונליות ללא קוד כלשהו.
  4. מחברי גישה - למעמד מופשט יכולות להיות מספר משתני גישה, כגון תת, פונקציות, מאפיינים וכו ', בעוד שממשק אינו מורשה להשתמש במשתני גישה וכל השיטות חייבים להיות מוגדרים באופן פומבי כציבורי.
  5. הומוגניות - מחלקה מופשטת משמשת ליישומים מאותו סוג, התנהגות ומעמד, בעוד שממשק משמש ליישומים שמשתפים רק חתימות של שיטות.
  6. הצהרה - מעמד מופשט משמש כמעמד בסיס עבור כל המעמדות האחרים, כך שהוא יכול להכריז על כל משתנה או להשתמש בו, כאשר ממשק אינו רשאי להכריז על משתנים כלשהם.
  7. הצהרת בנאי - בעוד שכיתה מופשטת יכולה להכיל הצהרת בנאי, לממשק לא תהיה הצהרת בנאי.
  8. Core לעומת פריפריה - מחלקה מופשטת משמשת להגדרת זהות הליבה של מחלקה וניתן להשתמש בה לאובייקטים מאותו סוג נתונים. ממשק, לעומת זאת, משמש להגדרת היכולת היקפית של הכיתה.
  9. קשיח לעומת sule - מעמד מופשט הוא גמיש יותר במונחים של פונקציונליות, לפחות מנקודת המבט של היזם, בעוד ממשק הוא נוקשה יותר.

אבסטרקט מחלקה לעומת ממשק: טבלה טופס

תקציר בכיתה

ממשק

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

סיכום

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