מדוע ירושה מרובה אינה אפשרית ב-C#?
מדוע ירושה מרובה אינה אפשרית ב-C#?

וִידֵאוֹ: מדוע ירושה מרובה אינה אפשרית ב-C#?

וִידֵאוֹ: מדוע ירושה מרובה אינה אפשרית ב-C#?
וִידֵאוֹ: Why multiple inheritance is not allowed in java using classes? #shorts #java #inheritance 2024, נוֹבֶמבֶּר
Anonim

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

רק אז, למה אסור ירושה מרובה?

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

אפשר גם לשאול, האם אנחנו יכולים לרשת ממשקים מרובים ב-C#? ממשקים הם כמו הסכמים או "חוזים" על איזה מעמד יכול לעשות . שיעורים פחית יש ממשקים מרובים , אבל כיתות לא יכולות לרשת מרובים שיעורים. שיעורים בירושה מיותר מ אחד הכיתה ידועה בשם מרובות - יְרוּשָׁה . C# כן לא מורשה מרובות - יְרוּשָׁה.

כאן, מהי בעיית Diamond ב-C# בירושה מרובה?

ה " בעיית יהלומים " היא אי בהירות המתעוררת כאשר שתי מחלקות B ו-C לָרֶשֶׁת מא' ומכיתה ד' יורש גם מ-B וגם מ-C. אם יש שיטה ב-A ש-B ו-C דרסו, וד' לא עוקף אותה, אז איזה מחלקה של השיטה עושה D לָרֶשֶׁת : זה של B, או זה של C?

מהי ירושה מרובה ב-C# עם דוגמה?

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

מוּמלָץ: