接口就是一种规范,协议约定好遵守某种规范就可以写通用代码
接口就是定义了一组具有各种功能的方法(只是一种能力没有具体实现就象抽象类一样“只说不做”)
接口的语法:public interface+接口名
public interface Ipersonable
{
void Show();
}
接口的注意事项:
1,接口中只包含方法(属性,事件,方法,索引器,这些实质是方法)不能包含字段
2,接口中的方法不能有实现就是没方法体,例如:void Show();
3,接口中的成员不能有访问修饰符默认的为Public
4,接口 不能被实例化
5,实现接口必须实现接口中的所有成员就象抽象类中的所有的抽象成员重写一样
6,当一个类继承了某个类又实现了某些接口必须把继承的类写在前面,例如:class Student:Person,Iperable{ }
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
为什么用接口
1,类不能多继承,在某种情况下只能用接口来代替,因为接口可以多实现(类只能继承一个父类)
2,接口的实现目的就是为了实现多态的
接口实现多态的例子:
public interface Ipersonable
{
void Show();
}
class Student : Ipersonable
{
public void Show()
{
Console.WriteLine("jiao zuo ye");
}
}
class Teacher : Ipersonable
{
public void Show()
{
Console.WriteLine("gai zuo ye");
}
}
class Program
{
static void Main(string[] args)
{
Ipersonable st = new Student();
st.Show();
Ipersonable te = new Teacher();
te.Show();
Console.ReadKey();
}
}
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
当多个类型都具有某个或某几个功能时(方法)但是这几个类型又不属于不同的案例(这几个类型没有共同的父类,这是不能用抽象类来实现多态了)所以这时为了实现多态就可以把这几个类型具有的共同的方法提取到一个接口中去让这几个类型分别实现接口;
例如:
public interface Ipersonable //学生和狗不是一个类型不能继承同一个父类但他们又有名字这个共同的功能所以通过接口可以让他们来实现多态
{
void Show();
}
public class Person
{
public void Show()
{ }
}
class Student :Person , Ipersonable
{
void Ipersonable.Show()
{
Console.WriteLine("我叫张三"); //这是在子类中重写的接口中的方法
}
————————————————————
Public void Show()
{
Console.WriteLine("我叫张三111");//这是子类中的show方法
}
} //此处不是重写父类方法
——————————————————
class Dog :Ipersonable
{
void Ipersonable.Show()
{ Console.WriteLine("我的名字是豆豆");
}
}
class Program
{
static void Main(string[] args)
{
Ipersonable st = new Student();
Ipersonable dog = new Dog();
Sh(st);
Sh(dog);
Console.ReadKey();
}
public static void Sh(Ipersonable it)
{
it.Show();
}
}
接口与接口之间叫继承而类与接口之间叫实现