---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
1为什么使用接口
当我们想给一个类提供附加的功能时,由于C#是一种单继承的语言,(一般情况下,那个个具体类可能已经有了一个超类),解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。
而接口是可插入性的保证。在一个等级结构中的任何一个类都可以实现一个接口,接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方 法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个 接口类型装载,传递实现了他的所有子类即多态的使用)。
综上,接口的作用就是保证系统中类的功能可插入性,可扩展性。
2接口的定义
interface 接口名
{
方法签名(默认public)
属性(get和set方法无方法体)
索引(特殊结构的属性,)
事件(托管变量的属性)
}
3 接口的实现
例子:
interface Iwalkable
{
void walk();
int legnum
{
get;
set;
}
}
class Person:Iwalkable(放在接口名上-右键-实现接口)
{
public void walk()
{
//实现代码
}
public int Legnum
{
get
{
//取值
}
set
{
//赋值
}
}
}
4 实现的两个接口的方法重名的解决:定义时方法前加上接口名,使用时由接口对象调用
例子:
interface I1
{
void Func();
}
nterface I2
{
void Func();
}
class Myclass :I1,I2(右键-显示实现接口)
{
public void I2.Func()
{
//实现代码
}
public void I2.Func()
{
//实现代码
}
}
static void Main(string [] args)
{
Myclass m=new Myclass();
//先将对象转换成接口对象
((I1)m).Func();
}
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------