接口: 就是一种规范,类只要继承这个接口,就必须按照接口约定的来,具备相应的属性和方法。如招聘的JD, 不要你实际做出来什么,只要你经验和学历符合JD里面的描述。
接口存在的意义: 多态,程序的扩展性,灵活的扩展性;
最基本的接口的实现:
class Program
{
static void Main(string[] args)
{
IFlyable btf = new ButterFly();
btf.Fly();
btf.Jump();
IFlyable bird = new Bird();
bird.Fly();
bird.Jump();
}
}
public interface IFlyable //接口一般都是以I开头的
{
// 接口中只能包含方法[属性,事件,索引器都是方法],
// 默认的访问修饰符都是Public,如果手动改写了访问修饰符,就会报错;
// 接口中的成员不能有任何实现,就像抽象方法一样不能有实现;
void Fly();
void Jump();
}
public class ButterFly : IFlyable
{
public void Fly()
{
Console.WriteLine("butterfly is flying!");
}
public void Jump()
{
Console.WriteLine("butterfly cannot jump!");
}
}
public class Bird : IFlyable {
public void Fly()
{
Console.WriteLine("Bird is flying!");
}
public void Jump()
{
Console.WriteLine("Bird is jumping!");
}
}
另外一个类可以继承多个接口
// 使用抽象类和虚方法已经完全可以实现多态了,为什么还用接口;
// 什么时候要用接口:
// 对于无法抽象出父类的类型,定义一个接口,比如鸟和飞机都会飞,但无法抽象出父类。
class Person
{ }
class Student : Person, IFlyable, ICloneable
{
public void Fly()
{ }
public void Jump()
{ }
public object Clone()
{
return null;
}
}