אוסיף ואחדד.
בעברית... ובכן... אחד המנגנונים החזקים מאחורי OOP הוא מנגנון ההורשה החוסך כתיבת קוד... הדרך הנכונה ליצור אובייקטים כמו שצריך היא באמצעות תהליך של "הפשטה"- Abstraction המאפשר ליצור מודל של אובייקטים קיימים ותהליכים קיימים . Abstract Class מוגדר כ Class אשר אינו שלם - לא ניתן ליצור ממנו אובייקטים. זהו למעשה שלב ביניים בעץ ההורשה.. (אינו שלם = מתוד אחד או יותר ללא אימפלמנטציה) לדוגמה - בניית סימולטור מכוניות יחייב יצירת מכונית מירוץ/מכונית ספורט משפחתית וכו´.... ברור שכולן מכוניות ולכן מן המתחייב שכולן ירשו מאיזהשהוא Class אב שיקרא Car לדוגמה.. אנו לא מעוניינים ליצור אובייקטים מה Class הזה , אלא רק לרשת ממנו לשנות אותו ולהוסיף אליו וליצור Class של מכונית מירוץ וכו´... לגבי Interface....אמת שמדובר במנגנון "המחקה" במידת מה הורשה מרובה ושיש דמיון בינו לבין Abstract Class..אך למעשה מדובר כאן ברעיון עיקרי מאוד שעליו למעשה מושתת כל שפת Java.. (Interface הוא קובץ הכולל קבועים והכרזות של מתודים בלבד!!) מדובר כאן על מנגנון המאפשר "לכפות" מבנה והתנהגות של אובייקט בהתאם לרצונו של מתכנן המערכת.. הטמעה של Interface ב Class , מחייבת את הקלאס לכלול ולהטמיע מתודים מסויימים והיתרונות הקיימים בכך כשבאים לבנות מערכת גדולה - הם עצומים! ה Interface הוא כלי חשוב כחלק ממנגנון OOP נוסף - Encapsulation.. כשמתכנת ב Java צריך לעבוד מול אובייקט כלשהו , מספיק לו להסתכל ב Interface הרלבנטי אותו מטמיע האובייקט , וכך ניתן לדעת אילו מתודים נמצאים בו וכיצד יש לקרוא להם.. לדוגמה: חברת סלולר המעוניינת שיצרנים ייצרו טלפונים סלולרים שהתוכנה שעליהם תתאים ותדע להתקשר מול התוכנה בחברת הסלולר. החברה תחלק ליצרנים את ה Interface שברצונה שהם יטמיעו במכשיר שלהם והם יהיו מחוייבים לעבוד על פיו. ובכל טלפון סלולרי -לא משנה איזו חברה או איזה מתכנת , יהיו אותם מתודים.. מקווה שעזרתי..