抽象类是一种不能实例化而必须从中继承的类,抽象类可以提供实现,也可以不提供实现。子类只能从一个抽象类继承。抽象类应主要用于关系密切的对象。如果要设计大的功能单元或者创建组建的多个版本,则使用抽象类。
接口是完全抽象的成员集合,不提供实现。类或者结构可以继承多个接口。接口最合适为不相关的类提供通用功能。如果要设计小而简练的功能块,则使用接口。接口一旦创建就不能更改,如果需要接口的新版本,必须创建一个全新的接口。
接口的实现分为隐式实现和显示实现。如果类或者结构要实现的是单个接口,可以使用隐式实现,如果类或者结构继承了多个接口,那么接口中相同名称成员就要显示实现。显示实现是通过使用接口的完全限定名来实现接口成员的。