מה ההבדל בין Abstract Class לבין ממשק ב- Java?



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

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

הנושאים הנדונים במאמר זה הם כדלקמן:





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

מהו Class Abstract ב- Java?

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



הערה: An שיטה מופשטת , היא שיטה שאינה מיושמת במקום ומוסיפהשלמות ל מעמד .

חבילה MyPackage // מחלקה מופשטת בכיתה מופשטת בעלי חיים {String AnimalName = 'בעלי חיים (שם מחרוזת) {this.AnimalName = name} // מצהירים על שיטות שאינן מופשטות // יש לה ברירת מחדל של יישום ציבורי בטל BasicInfo (פרטי מחרוזת) {מערכת. out.println (this.AnimalName + '' + פרטים)} // שיטות מופשטות אשר יושמעו // על ידי תת-הקבוצות שלה (אב) בית גידול חלל ציבורי מופשט () נשימה חלל ציבורי מופשט ()} מחלקה ארצית מרחיבה בעלי חיים {// constructor Terrestrial (שם מחרוזת) {super (name)} @ Override public void habitat () {System.out.println ('leave on land and')} @ Override public void vacation () {System.out.println ('respire דרך הריאות או קנה הנשימה. ')}} מחלקה Aquatic מרחיבה בעלי חיים {// constructor Aquatic (שם מחרוזת) {super (name)} @ Override public void habitat () {System.out.println (' זה משאיר במים ו ') } @ עקירה על הנשימה הריקה הציבורית () {System.out.println ('נשימה דרך זימים או עורם.')}} מחלקה AbstractClassDemo {וואי סטטי ציבורי ראשי d (String [] args) {// יצירת האובייקט של המחלקה הארצית // ושימוש בהתייחסות למחלקת בעלי חיים. אובייקט בעלי חיים 1 = אובייקט חדש ('בני אדם') ארצי 1. BasicInfo ('הם יצורים יבשתיים, הם') אובייקט 1. habitat () אובייקט 1. respiration () System.out.println ('') // יצירת אובייקטים ממעמד המעגל בעלי חיים object2 = חדש Aquatic ('Fishes') object2.BasicInfo ('הם יצורים אקוטיים, הם') object2.habitat () object2.respiration ()}}

תְפוּקָה

בני אדם הם יצורים יבשתיים, הם עוזבים על היבשה ונשמים דרך ריאות או קנה הנשימה. דגים הם יצורים אקוטיים, הם משאירים במים ונשמים דרך זימים או עורם.

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



ממשק בג'אווה

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

חבילה ממשק MyPackage בעלי חיים {// שיטות מופשטות חלל בית גידול () נשימה בטלה ()} מחלקה TerrestrialA מיישמת בעלי חיים {String AnimalName = '' // בנאי TerrestrialA (שם מחרוזת) {this.AnimalName = name} @ ביטול בית גידול ריק ריק () {System.out.println (this.AnimalName + 'עזוב ביבשה ו')} @ עקוף נשימה ריקה ציבורית () {System.out.println ('נשימה דרך ריאות או קנה הנשימה.')}} מחלקה AquaticA מיישמת חיות {מחרוזת AnimalName = '// בונה AquaticA (שם מחרוזת) {this.AnimalName = name} @Override בית גידול ריק () {System.out.println (this.AnimalName + 'השאר במים')} @ עקוב נשימה בטלה ציבורית () {System.out.println ('נשימה דרך זימים או עורם.')}} מחלקה JavaInterfaceDemo {ציבורי ריק ריק סטטי (מחרוזת [] טענות) {// יצירת האובייקט של הכיתה הארצית // ושימוש בהתייחסות למחלקת בעלי חיים . אובייקט בעלי חיים 1 = TerrestrialA חדש ('בני אדם') object1.habitat () object1.respiration () System.out.println ('') // יצירת אובייקטים של סוג המעגל בעלי חיים object2 = חדש AquaticA ('Fishes') אובייקט 2. habitat () object2.respiration ()}}

תְפוּקָה

בני אדם עוזבים על היבשה ונשמים דרך ריאות או קנה הנשימה. דגים משאירים במים ונשמים דרך זימים או עורם.

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

פיבונאצי c ++ רקורסיבי

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

מחלקה מופשטת מול ממשק

הטבלה שלהלן מפרטת את ההבדלים העיקריים בין מחלקה מופשטת וממשק.

פָּרָמֶטֶר כיתה מופשטת מִמְשָׁק

יישום שיטת ברירת המחדל

זה יכול להיות מיושם ברירת מחדל

ממשקים מספקים הפשטה טהורה ואינם יכולים להיות מיושמים כלל

משתנים

הוא עשוי להכיל משתנים שאינם סופיים.

המשתנים המוצהרים בממשק הם כברירת מחדל סופיים

שף לעומת בובה לעומת

מילת מפתח בשימוש

ניתן להרחיב שיעור מופשט באמצעות מילת המפתח 'מרחיב

הממשק צריך להיות מיושם באמצעות מילות מפתח

משני גישה

פחיתבעלי שינוי ציבורי, מוגן, פרטי וברירת מחדל

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

מהירות היישום

זה מהיר יותר מהממשק

ממשק איטי במקצת ודורש כיוון נוסף

כיתה רגילה

זה יכול להרחיב רק מעמד מופשט אחד

מהי אנקונדה לפיתון

יכול ליישם ממשקים מרובים

קונסטרוקטורים

בכיתה מופשטת יכולים להיות קונסטרוקטורים

ממשק לא יכול להכיל קונסטרוקטורים

ירושה מרובה

מחלקה מופשטת יכולה להרחיב מחלקה אחרת ויכולה ליישם ממשקי Java מרובים

הממשק יכול להרחיב ממשק Java נוסף בלבד

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

מתי להשתמש בכיתה מופשטת ומתי להשתמש בממשק?

שקול להשתמש בשיעורים מופשטים במקרים הבאים:

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

שקול להשתמש בממשקים במקרים הבאים:

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

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

דאג שתתאמן ככל האפשר ותחזיר את החוויה שלך.

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

יש לך שאלה עבורנו? אנא הזכיר זאת בקטע ההערות של 'ממשק מפת java' זה מאמר ונחזור אליך בהקדם האפשרי.