类与接口的区别和详解

接口和抽象类的区别和联系
共同点
1)抽象类和接口都不能被直接实例化;
 
差异点
1)一个类只能继承一个抽象类,但是一个类可以同时实现多个接口;
2)接口里面只能对方法进行声明,抽象类既可以对方法进行声明也可以对方法进行实现;
3)抽象类里面的抽象方法必须全部被子类实现,如果子类不能全部实现,那么子类必须也是抽象类。接口里面的方法也必须全部被子类实现,如果子类不能实现那么子类必须是抽象类;
4)抽象类描述了“A is a B” 的关系;接口描述了“A is like a B” 的关系;
5)设计理念:
接口的设计目的是为了实现多态,是对类的行为进行约束,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。
抽象类的设计目的是代码复用,可以把所有子类拥有的共同特性放到一个抽象类中,子类继承此抽象类 。当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(A的非真子集,记为B),可以让这些类都派生于一个抽象类。在这个抽象类中实现了B,避免让所有的子类来实现B,这就达到了代码复用的目的。而A减B的部分,留给各个子类自己实现。正是因为A-B在这里没有实现,所以抽象类不允许实例化出来(否则当调用到A-B时,无法执行)。

posted @ 2020-10-30 14:31  沉默小和尚  阅读(1264)  评论(0编辑  收藏  举报