09-05-2010, 22:25
|
|
|
|
חבר מתאריך: 14.12.09
הודעות: 9,751
|
|
אין שום בעיה.
אתה רוצה שכל המחלקות D1, D2, D3, ... שמממשות את ממשק I יצטרכו גם לרשת ממחלקה B.
נכון? זה מה שאמרת.
למה? לדוגמה כי אתה רוצה שכל פונקציה לא ממומשת במחלקה שמממשת את ממשק I תקבל
מימוש ברירת-מחדל ממחלקה B. אפשר למצוא עוד דוגמות, אני מניח.
איך משיגים את המטרה הזאת באמצעות הכלים שנותנת לך שפת ג'אווה?
יוצרים מחלקה אבסטרקטית בשם I_B שיורשת מ-B ומממשת את I. בג'אווה, מחלקה שמממשת
ממשק חייבת לספק מימושים לכל הפונקציות של הממשק, אלא אם כן מדובר במחלקה אבסטרקטית.
כך שאתה בעצם כותב שורת ג'אווה אחת שמגדירה את המחלקה. היא מקבלת את כל המימושים של
מחלקה B, ואת כל האילוצים של ממשק I.
כעת במקום להגיד לאנשים "ממשו את ממשק I", אתה אומר להם "תרשו ממחלקה I_B". הם
מקבלים את כל המימושים ממחלקה B דרך ירושה, וחייבים לממש את כל ממשק I כי מחלקה I_B
"מממשת" (במרכאות, כי היא לא באמת מספקת מימושים) את ממשק I.
אין שום בעיה.
|