我知道Java和C#中不允许多重继承.很多书只是说,不允许多重继承.但它可以通过使用接口来实现.没有讨论为什么不允许它.任何人都可以告诉我为什么不允许它?
我和一位同事对多重继承有一点争论.我说它不受支持,而且他说的是.所以,我以为我会问网上那些聪明的人.
我遇到过许多反对在C#中包含多重继承的论据,其中一些包括(除了哲学论证):
我来自C++背景,错过了多重继承的力量和优雅.虽然它不适合所有软件设计,但在某些情况下很难否认它在接口,组合和类似的OO技术上的实用性.
是否排除了多重继承,说开发人员不够聪明,不能明智地使用它们,并且在它们出现时无法解决这些复杂问题?
我个人欢迎将多重继承引入C#(也许是C##).
附录:我很想知道来自单一(或程序背景)与多重继承背景的回复.我经常发现,没有多重继承经验的开发人员通常会默认使用多继承是不必要的参数,因为他们没有任何关于范例的经验.
我已经多次遇到过这种情况,所以想用一个真实的例子来了解更有经验的C#开发人员如何处理这个问题.
我正在围绕非托管MediaInfo库编写一个.NET包装器,它收集有关媒体文件(电影,图像......)的各种数据.
MediaInfo有许多功能,每个功能适用于不同类型的文件.例如,"PixelAspectRatio"适用于图像和视频,但不适用于音频,字幕或其他内容.
我想要包装的功能的子集如下:
General Video Audio Text Image Chapters Menu (Name of function)
x x x x x x x Format
x x x x x x x Title
x x x x x x x UniqueID
x x x x x x CodecID
x x x x x x CodecID/Hint
x x x x x Language
x x x x x Encoded_Date
x x x x x Encoded_Library
x x x x x InternetMediaType
x x …Run Code Online (Sandbox Code Playgroud) 可能重复:
c#多重继承
我只是使用Asp.net创建一个简单的应用程序,这里有3个类User, Staff, Student.在User课堂上我喜欢UserName, Password, Email and Mobile和在Staff and Student课堂上的属性General details like FirstName, MiddleName, LastName as well as Email, Mobile.
每当我添加新员工或学生时,我都要为他们创建一个用户帐户.
所以在User类中,我尝试继承Staff类,以便我可以从Staff中访问User类中的属性.
在成功添加人员数据之后,我需要Add在用户类中调用(我已经拥有此方法)方法,该方法将使用他的数据为员工创建用户帐户.
还有一件事,我知道C#不支持多重继承,这里我需要继承Staff和Student类.我怎样才能做到这一点.
有人能帮我一下吗.