黑马程序员技术交流社区
标题:
接口的多继承会带来哪些问题?
[打印本页]
作者:
高林
时间:
2014-3-20 10:34
标题:
接口的多继承会带来哪些问题?
本帖最后由 高林 于 2014-3-20 14:40 编辑
接口的多继承会带来哪些问题?多了就看不过来了。。。
作者:
shangxin
时间:
2014-3-20 10:39
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
作者:
百川
时间:
2014-3-20 11:20
通过接口可以实现多重继承,接口一旦被继承,子类需要吧接口的所有成员实例化。
但是如果接口中有名称相同的成员时,就会出现不能实现所有接口成员,
为了避免这样的情况,可以使用”显式实现接口“的方法,
实现化时,使用接口名.成员名来实现。使用时,使用强转。
注意,显式实现接口只能使用指定接口对象来调用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2