שאלה בג´אווה.

שאלה בג´אווה.

השאלה היא כזו. יש בג´אווה מבנה שנקרה מחלקה מופשטת (ABSTRACT) ויש ממשק (INTERFACE) השאלה שלי, היא: חוץ מהעובדה שאפשר לרשת שני ממשקים בבת אחת, ומצד שני רק מחלקה אחת בכל פעם, יש עוד הבדל בין שני המבנים?
 

mz70

New member
Interfaces and Abstract Classes

An abstract class is a class that you can not use as an object , meaning you can not call it like this: ()AbstractClass cl = new AbstractClass; You have to Overide all the methods in that class that was decleard as abstract methods. Interfaces are Java´s way of dealing with the common situation of wanting a class to reflect the behavior of several parents --> multiple inheritance. A good example for the last frase is when you want an applet to be using a thread: As an applet it should inherit from the Applet class so, it can not inherit from the class Thread as well, this is whay you have to implement the interface Runnable that declears only one method: run ();
 

philips

New member
אוסיף ואחדד.

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