辨析C sharp 之interface、abstract、virtual

tags: #内容/编程/Csharp #类型/辨析 #来源/转载 #类型/笔记 #发布/个人网站

辨析C sharp 之interface接口、abstract抽象类、抽象方法、virtual虚方法。

以上关键字作用都是为了实现面向对象编程之多态性。

辨析抽象类、一般类

  1. 抽象类和一般类的相同点:都可以继承其他的类或者接口,也可以派生子类,并且都有具体的方法;

  2. 不同点:抽象类中有抽象方法,一般类中没有;抽象类不可以实例化,一般类却可以;

辨析抽象类、接口

  1. 抽象类和接口的相同点:都不能实例化,继承抽象类的子类必须实现抽象类中的抽象方法,实现接口的子类必须实现接口中的全部方法和属性。

  2. 不同点:抽象类中除了具有抽象方法之外,还有具体的方法。接口只能有抽象方法

辨析抽象类、抽象方法

  1. 如果一个类包含抽象方法,那么该类也是抽象的,也必须是抽象的。
  2. 抽象方法,必须存在于抽象类当中。相反,抽象类中不一定全部是抽象方法。

辨析虚方法,抽象方法

  1. 抽象方法没有提供实现部分,是一种强制派生类重写的方法,否则派生类将不能被实例化。
  2. 虚方法必须有实现部分,并为派生类提供了重写该方法的选项。虚方法不是必须在派生类中重写,虚方法可以有方法体,包含虚方法的类可以被实例化。

————————————————

参考:
C# 抽象类和抽象方法详解
C# 抽象方法(abstract )与虚方法(virtual)的区别
C#中的虚方法,抽象方法,抽象类以及接口 - 知乎