【接口】使用关键字interface定义
接口可以理解为对一组方法声明进行的统一命名,但不提供实现;继承于该接口的类需都提供实现。
接口中除了可以定义方法,还可以包含属性、事件、索引器。不能包含字段、运算符重载、实例构造函数和析构函数。
接口:默认公共,禁止再有修饰符
接口和抽象类不同,接口能将实现细节和提供的服务完全隔离。
接口的关键特点是既不包含实现,也不包含数据。C#不允许为接口成员使用访问修饰符,所有成员都自动定义为公共成员。
接口的一个重要特征是永远不能实例化。不能使用new创建接口,所以接口没有构造器或终结器。只有实例化实现接口的类型,才能使用接口实例。此外接口不能包含静态成员。
接口的重要目的是多态性,而假如没有实现接口的那个类型的实例,多态性是没有什么价值的。
class Program
{
static void Main(string[] args)
{
Rabbit R1=new Rabbit(); //创建Rabbit类实例R1
R1.likeFood(); //调用likeFood方法
Dog D1 = new Dog();
D1.likeFood();
Console.Read();
}
}
public interface Animal //定义Animal接口,制定统一的规范 喜欢的食物likeFood()
{
void likeFood();
}
class Rabbit : Animal //定义Rabbit类,继承接口Animal,实现likeFood()
{
public void likeFood()
{
Console.WriteLine("我是兔子,喜欢吃萝卜");
}
}
class Dog : Animal //定义Dog类,也继承接口Animal,实现likeFood()
{
public void likeFood()
{
Console.WriteLine("我是小狗,喜欢吃肉");
}
}
输出结果如下:
========== 实现多态的方法: 虚方法、抽象类 、接口 ================