//抽象类与接口的区别与联系
/*1.
*如果一个类中有抽象方法,那么这个类一定是抽象类。
*也就是说必须在含有抽象方法的类的前面加上 abstract关键字,否则会发生错误。
*继承抽象类的子类必须在类中实现抽象类中的方法,也就是给出抽象方法的定义。
*抽象类的定义如下:abstract public class AbstrctClass { //... }
*2.
*如果一个类被定义为抽象类,就不能创建这个类的对象,必须使用继承的方法来访问抽象类中的成员,
*也就是说抽象类的作用就是用于继承。抽象方法是没有实现细节的方法,所以也没有大括号。
*抽象方法的定义如下:abstract public void AbstractMethod();
*3.
*抽象类成员中可以包括实现,子类必须使用抽象类修饰符abstract才能实现抽象类成员。
*而继承了接口的类必须要实现所有接口成员.(接口中的接口成员并没有实现)。
*接口的定义如下:public interface Info(接口名) { //... }
*4.
*类只能够继承单个类,但是能够继承多个接口,接口也可以继承多个接口。接口成员默认为public的,
*因此没有修饰符,接口实现也必须为public的,因为接口用来定义类成员,该成员能够被另外一个类调用。
*接口方法的定义如下:string getInfo(string Name,string Phone); 结尾处有一分号(;)
*5.
*需要注意的是,在实现接口方法的实现类中,必须确保每个方法都完全匹配对应的接口方法,具体遵循以下规则:
*a>方法名和返回类型完全匹配
*b>任何参数(包括ref和out关键字修饰)完全匹配
*c>使用接口名作为方法名的前缀,这称为显示接口实现
*d>假如使用显示接口实现,方法不应有一个访问修饰符,用于实现一个接口的所有方法都具有public可访问性
*6.
*一个类可以在扩展另一个类的同时实现一个接口,C#使用位置记号法来进行区分所继承的类和实现的接口。
*首先写父类名,然后跟一个逗号,最后是接口名。具体定义如下:
*interface Info { //... }
*class BaseClass {//... }
*class SubClass : BaseClass , Info { //... }
*/