C#抽象类和接口——基本讲解

一、抽象类

  1. 抽象类用来列举一个类所需要的行为,但不去具体实现
  2. 必须由子类实现抽象类的方法
  3. 抽象方法只指明方法的返回值类型,方法名和参数,但不提供方法的实现
  4. 有抽象方法的类必须定义为抽象类
  5. 子类使用override关键字重写父类的抽象方法
  6. 如果子类没有实现父类的抽象的方法,那么子类也必须是抽象的
  7. 抽象类使用abstract关键字修饰

二、接口(interface)

  1. 语法:
    [属性][访问修饰符] interface 接口名
    {
        //接口主体
    }
  2. 接口只能声明方法、属性、索引器和事件
  3. 接口中不能声明字段、构造方法、常量和委托
  4. 接口的成员默认是public ,如果明确指定访问级别会报编译错误
  5. 接口的所有方法属性、方法和索引器都必须没有实现
  6. C#中的接口需要以“I”开头
  7. 多重接口的实现(合并接口)
    继承合并接口需要实现被合并的所有接口的方法
  8. 继承基类并实现接口
    注意:如果一个类继承基类,必须先写继承的类再写接口

三、抽象类和接口的区别:
相同点:

  • 都不能被实例化
  • 都包含有未实现的方法
  • 子类必须实现所有未实现的方法

不同点:

  • 接口的子类可以实现多个接口,抽象类的子类只能继承一个抽象类
  • 接口可以直接实现方法,抽象类需要使用override关键字
  • 接口用interface关键字,抽象类用abstract关键字

四、is和as关键字

  • is:测试一个实例是不是另外一种类型(返回值为true或false)
  • as:as在测试一个实例是不是另外一种类型的同时,如果是则转为另外一种类型,如果不是返回null


 

你可能感兴趣的:(C#,c#,接口,抽象类)