接口的多继承会带来哪些问题?
答案:2 悬赏:10 手机版
解决时间 2021-03-15 21:50
- 提问者网友:留有余香
- 2021-03-15 00:06
接口的多继承会带来哪些问题?
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-03-15 01:25
答:C#中的接口与类不同,可以使用多继承,即一个子接口可以有多个父接口。但如果两个父成员具有同名的成员,就产生了二义性(这也正是C#中类取消了多继承的原因之一),这时在实现时最好使用显式的声明示例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample17{classProgram{//一个完整的接口声明示例interfaceIExample{//属性stringP{get;set;}//方法stringF(intValue);//事件eventEventHandler E;//索引指示器stringthis[intIndex]{get;set;}}interfaceIA{intCount { get; set;}}interfaceIB{intCount();}//IC接口从IA和IB多重继承interfaceIC : IA, IB{}classC : IC{privateintcount = 100;//显式声明实现IA接口中的Count属性intIA.Count{get {return100; }
全部回答
- 1楼网友:轮獄道
- 2021-03-15 02:19
c# 中的接口与类不同,可以使用多继承,即一个子接口可以有多个父接口。但如果两个父成员具有同名的成员,就产生了二义性(这也正是 c# 中类取消了多继承的原因之一),这时在实现时最好使用显式的声明
示例:
using system;
using system.collections.generic;
using system.text;
namespace example17
{
class program
{
//一个完整的接口声明示例
interface iexample
{
//属性
string p
{
get;
set;
}
//方法
string f(int value);
//事件
event eventhandler e;
//索引指示器
string this[int index]
{
get;
set;
}
}
interface ia
{
int count { get; set;}
}
interface ib
{
int count();
}
//ic接口从ia和ib多重继承
interface ic : ia, ib
{
}
class c : ic
{
private int count = 100;
//显式声明实现ia接口中的count属性
int ia.count
{
get { return 100; }
set { count = value; }
}
//显式声明实现ib接口中的count方法
int ib.count()
{
return count * count;
}
}
static void main(string[] args)
{
c tmpobj = new c();
//调用时也要显式转换
console.writeline("count property: {0}", ((ia)tmpobj).count);
console.writeline("count function: {0}", ((ib)tmpobj).count());
console.readline();
}
}
}
结果:
count property: 100
count function: 10000
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯