看视屏学编程之接口、抽象类

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

 
接口
 
定义语法
interface 接口名      // 接口名第一个字母为大写I,如:Icompare
{
        public void Run() { }          //——错误,接口中不能有方法的实现
        public IAnimal() { }        //——错误,接口中没有构造函数
        public void Walk();    //——错误,接口中不能写访问修饰符,
        void Walk();                 //——正确
        void Eat(DateTime time);   //——正确
        string name;      //——错误,接口不能包含字段
        string Name            //——正确,接口中可以定义属性
    {
    get;  set;
    }     
}                         //接口是对方法的约束,是一种规范
在接口中要按照与在类或结构中一样的方式声明方法,只是不允许制定任何修饰符,方法的主体
也要写成一个分号(;)。   ——接口默认的访问性是:public
接口中也不能包含任何字段,但是接口中可以定义属性  ——属性可以看作是特殊的方法
 
接口的实现
 
类来继承接口,接口也可以继承接口;
类继承接口,必须把接口的属性和方法全部都实现
实现一个接口时,必须保证每个方法都完全匹配与它对应的接口中的方法:
方法名和返回类型完全匹配;
所有参数(包括ref好out关键字的修饰符)都完全匹配;
多使用接口名作为方法名的前缀,显示的实现接口;     ——显示实现接口中的方法时不能加反问修饰符
interface IEat
{
  void Eat();
}
interface IRun
{
  void Run();
}
class Person : IEat, IRun       ——实现多个接口时,以逗号分割的列表列出接口
{               ——如果还继承了类的话,类写在接口前面  
        void IEat.Eat()                          ——//接口名打点方法名
        {
            Console.WriteLine("吃");
        }
        void IRun.Run()
        {
            Console.WriteLine("跑");
   }
}
通过接口引用一个类:
Person p1 = new Person();
IEat iP1 = p1;
通过接口引用一个对象时,只有通过接口可见的方法才能被调用。
接口的限制:
1、不允许在接口中定义任何字段;
2、不允许在接口中定义任何构造函数;
3、不允许在接口中定义任何析构函数;
4、不允许为任何方法指定修饰符;
5、不允许在接口中嵌套任何类型;
6、接口可以从另一个接口继承,但是不允许从结构或者类中继承一个接口。
 
抽象类
 
定义语法
abstract class 类名
{
  ……
}
抽象类与普通类的比较
相同点:普通类能定义的内容在抽象类里面都可以定义
不同点:抽象类里面可以定义抽象方法,但普通类不能;抽象类不能被实例化,普通类可以;
抽象类可以继承其他类,也可以被其他类继承(派生其他类);
抽象类里的抽象方法在派生类中(派生类不是抽象类)必须全部被实现,因为普通类不能有抽象方法;
实现抽象方法使用override,跟重写基类里的vritual方法关键词一样。
abstract class Person
{
  public abstract void Eat();
}
class Chinese : Person
{
  public override void Eat()
  {
    Console.WriteLine("用筷子吃");
  }
}
抽象类不能被实例化,它的专门用来被继承的;
但是,抽象类可以引用其子类的对象:
Person p1;
Chinese c1 = new Chinese();
p1=c1;
 
 
 
 --------------------------------------------------------------------
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/cctt/p/3142798.html