1. 抽象类是特殊的类,不能被实例化(定义了纯虚函数的类称为抽象类),除此之外,具有类的其他特性。重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。
接口是引用类型的,类似于类,和抽象类的相似之处有三点:
1. 不能实例化;
2. 包含未实现的方法声明;
3. 派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法,还包括其它成员);
抽象类、接口的设计目的区别接口的设计目的,是对类的行为进行约束,也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。
而抽象类的设计目的,是代码复用。当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(记为B),可以让这些类都派生于一个抽象类。在这个抽象类中实现了B,避免让所有的子类来实现B,这就达到了代码复用的目的。而A减B的部分,留给各个子类自己实现。
抽象类、接口的区别区别1:抽象类体现继承关系,一个类只能单继承。
接口体现实现关系,一个类可以多实现。
区别2:抽象类是继承,是"is a"关系。
接口是实现,是"like a"关系。
区别3:抽象类可以定义非抽象方法,供子类直接使用。
接口的方法都是抽象,接口的成员都有固定修饰符。



