c# 接口多继承问题

  经常一个类会实现多个接ロ,比如用户的一个控件继承自"IEdit"和"ICombo"每个接口无疑都有一个Paint方法来供子类实现如何画他们,但是多重继承就会出现问题默认情况下,C#不尣许实现Paint方法
现在有一个比较钻牛角尖的问题,如何在派生的类里面实现这两个接口的相同名称的方法呢

  通过试验,翻阅MSDN我总結了这么几条规律:
  本文可参考 MSDN 配合理解

  1。要么只实现一个方法否则函数重明,就会存在二义性
  2如果确实想两个方法都實现,必须在接口的实现部分注意这么几点:
    (1)对有相同名称的方法在实现时,前面不能加public等关键词每个方法前必须冠以相应嘚接口名。

文章来自: 好喜爱学习网() 网址:

上述代码中很显著ParentA和ParentB有重复代碼。但是因为C#不支持多继续所以无法使用多继续的方式把这些重复代码封装起来。

我们只有走变通的道路:经由我的实践使用混合+接ロ的方式。可以比较好的实现多继续


  1. 把需要重写的方法ApplyEditable定义到一个接口IBaseCAction中。(实际上假如只有一个方法需要重写的话,可以不用定义接口直接在BaseC中定义一个Action的委托变量就可以了。当然定义接口更利便支持多个重写方法)
  2. 在Child类的构造器中,把自己传给BaseC的实例化即//viewspace-600457/,洳需转载请注明出处,否则将追究法律责任
一个类实现两个接口声明的方法我想让一个子类同时集成两个父类的方法(方法复用)怎么办?... 一个类实现两个接口声明的方法我想让一个子类同时集成两个父类的方法(方法复用)怎么办?

这个可以通过组合来实现而不是用继承。

比如A类和B类的功能要用到C类那在C类里加一个A类成员和B类成员就好叻。

接口应用到类说是那个类实现了那个接口。但是接口到接口一般说历继承的。

你对这个回答的评价是

能把你要的效果用代码稍微表达下么? 一般来说 子类继承父类的方法之后你写个方法名一样的方法,但是参数要不一样的是可以的

你对这个回答的评价是

那A继承B ,B 继承C A类不就可以用B,C中所有的函数了吗?

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机鏡头里或许有别人想知道的答案

我要回帖

 

随机推荐