מדוע ירושה מרובה נתמכת ב-C++ אך לא ב-Java?
מדוע ירושה מרובה נתמכת ב-C++ אך לא ב-Java?

וִידֵאוֹ: מדוע ירושה מרובה נתמכת ב-C++ אך לא ב-Java?

וִידֵאוֹ: מדוע ירושה מרובה נתמכת ב-C++ אך לא ב-Java?
וִידֵאוֹ: Why multiple inheritance not supported by java? #javainterview #multipleinheritance #inheritance 2024, מאי
Anonim

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

בהתאם לכך, מדוע ירושה מרובה אינה נתמכת ב-Java?

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

כמו כן, מהי בעיית יהלום בירושה מרובה? ה " בעיית יהלומים " היא אי בהירות שיכולה להיווצר כתוצאה מהתרת ירושה מרובה . זה רציני בְּעָיָה לשפות (כמו C++) המאפשרות ירושה מרובה של מדינה. בג'אווה, לעומת זאת, ירושה מרובה אסור למחלקות, רק לממשקים, ואלה אינם מכילים מצב.

באופן דומה, אנשים שואלים, מדוע C++ תומך בירושה מרובה אך C# לא?

ירושה מרובה ב C# C# אינו תומך בירושה מרובה , כי הם נימקו את ההוספה ירושה מרובה הוסיף יותר מדי מורכבות C# תוך מתן תועלת מועטה מדי. ב C# , לשיעורים מותר רק לָרֶשֶׁת מכיתה חד הורית, שנקראת יחיד יְרוּשָׁה.

כיצד C++ תומך בירושה מרובה?

בניגוד לשפות תכנות רבות אחרות מונחה עצמים, C++ מאפשר ירושה מרובה . ירושה מרובה מאפשר לכיתת ילד לָרֶשֶׁת מיותר מכיתת הורים אחת. כיתות בעלי חיים וזוחלים לָרֶשֶׁת מזה. רק המחלקה Animal עוקפת את השיטה breathe().