实现过程必须在实现接口的类中完成。
类继承具有单根性,接口可多重继承。
父接口也称为该接口的显示基接口。
接口多重继承时,派生接口名与父接口用冒号隔开,多个父接口之间用逗号隔开。
接口的成员之间不能同名,继承的成员不用再声明,但接口可以定义与继承而来的成员同名的成员,这称为接口成员覆盖了继承而来的成员,这不会导致错误,但编译器会给出一个警告。关闭警告提示的方法是在成员声明前加上一个new关键字。但如果没有覆盖父接口中的成员,使用new关键字会导致编译器发出警告。
interface Interface2 : Interface1
{
new void Write();//如果派生接口中对显示基接口中的成员进行重定义,需要使用new来解除警告
void Read();//不同的接口中(不包含派生)允许有同名的成员
//string Read{get;set;} 接口之间的成员布恩那个同名,即使类型不同。
}
interface Interface1
{
void Write();
}
引用:9.14任务实施
eagle、sparrow、ostrich都是birds,根据三者的共性,提取出鸟类作为父类;并且各自具有各自的特点,老鹰吃小鸡,麻雀吃粮食,鸵鸟吃青草。
老鹰和麻雀都会飞,如何实现这个fly功能。
1.在父类中添加fly,但是鸵鸟不会飞,所以不能加在父类中。
2.会飞的子类中添加fly功能,完全可以,但是违背开放封闭原则,下次我新加一个天鹅swan,我们还要去源码去查看fly功能是如何实现的,然后在天鹅中添加fly方法,相同的功能,重复的代码,明显不合理,也不利于扩展。
开放封闭原则:
定义:软件实体应该可以扩展,但是不可以修改。
特性:1.对扩展是开放的 2.对修改是封闭的。开放即可以操作,封闭即不可以操作。
假如我再新增一个ballon,我继承bird类合适吗?很显然不行,我们需要一种规则,这种规则就是接口。
老鹰麻雀都会飞就实现fly这个接口,鸵鸟不会飞,就不实现这个接口。