如何使用接口克服C#中多重继承的问题?

如何使用接口克服C#中多重继承的问题?,第1张

概述我明白C#不支持多重继承,解决方案是使用接口.但是我不明白为什么接口不会像多继承一样创建钻石问题.使用接口如何避免多重继承的陷阱? 一个类可以实现任意数量的接口,即使这些接口也扩展了其他接口.多继承是不可能只有类. // This is not allowedclass A { void A() {} }class B { void B() {} }class C : A, B {}// 我明白C#不支持多重继承,解决方案是使用接口.但是我不明白为什么接口不会像多继承一样创建钻石问题.使用接口如何避免多重继承的陷阱?解决方法 一个类可以实现任意数量的接口,即使这些接口也扩展了其他接口.多继承是不可能只有类.
// This is not allowedclass A { voID A() {} }class B { voID B() {} }class C : A,B {}// This is allowedinterface IA { voID A(); }interface IB { voID B(); }class A : IA,IB{    public voID A() {}    public voID B() {}}

类中存在钻石问题,因为有可能发生冲突的实现(如果A和B具有相同的方法,并且C都同时扩展,则需要哪种方法?).另一方面,接口只需要一个实现类型来拥有他们声明的方法.

如果在两个接口中定义完全相同的方法,并且一个类实现了两个接口,这并不重要.所有的类都需要做的是为方法提供一个实现,以便可以编写代码来调用该方法.意思是这样的:

interface IA { voID Method(int x); }interface IB { voID Method(int x); }class A : IA,IB{    public voID Method(int x)    {        Console.Writeline(x);    }}

请注意,类可能仍然继承自其他类,加上任何数量的接口:

class A : B,IA,IB {}
总结

以上是内存溢出为你收集整理的如何使用接口克服C#中多重继承的问题?全部内容,希望文章能够帮你解决如何使用接口克服C#中多重继承的问题?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1260314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存