首先区别抽象方法与虚方法:
①从方法的声明来看:抽象方法只是方法的声明,没有方法体,关键字为abstract;虚方法则是有方法体的,关键子为virtual
②从方法的声明位置来看:抽象方法只能声明在抽象类中;而虚方法则没有什么限制
③从方法的使用来看:抽象方法必须在派生类中进行override,否则包含抽象方法的抽象类不能被实例化;而虚方法在派生类中则可以选择被重写,也可以选择不进行重写
抽象方法和虚方法的共同点:
在使用的时候都是使用override关键字进行覆盖
抽象类普通类的区别与联系:
①抽象类不能被实例化
②通过抽象类不能被实例化这一特点就能够推断出抽象类不能使用new和sealed关键字,不能使用new的原因是抽象类不能被实例化,不能使用sealed的原因是抽象类必须通过在继承的类不是实例的情况下才能被实例化
③抽象类的派生类如果没有把抽象类的抽象方法实现的情况下那么抽象类的派生类依然是抽象类。
抽象类与接口的使用:
①抽象类用于一个类的部分实现,然后再由用户按需求对其进行不同功能的扩展和完善;接口只是定义一个行为的规范或规定
②抽象类在组件的所有实现中提供通用的已实现的功能。接口创建在大范围全异对象间使用的功能
③抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用的功能
④抽象类主要用于设计大而复杂的功能单元;而接口用于设计小而简练的功能模块