首页 > 其他 > 详细

抽象类和接口的区别

时间:2021-02-20 15:59:02      阅读:21      评论:0      收藏:0      [点我收藏+]

1、什么是抽象类

众所周知,在Java面向对象的概念中,所有的对象的描述都是通过类来实现的,但是并不是所有类都是用来描述对象的,这比如说抽象类,在我的理解中,抽象类就类似一个模板,并没有将一个对象描述的很清楚,因为它并没有足够的信息去描述一个具体的对象,这就是所谓的抽象类。抽象类其实和普通的类基本一样,除了抽象类不能实例化之外,普通类有的功能它都有,成员变量、成员方法和构造方法的访问方式和普通类一样,抽象类作为一个模板,是继承它的子类的父类,它提取了子类的通用的方法,供子类使用,很好的实现了代码的复用。

2、为什么使用抽象类

其实一开始我也是不理解的,为什么要引入抽象类,就使用普通类难道不行吗?答案是只使用普通类是可以的,子类去继承一个普通类也是可以的,子类完全可以覆盖父类的方法,似乎抽象类完全没有必要。但是仔细想想,其实父类的有些方法,完全没有必要详细的去写怎么实现这个方法的,因为子类实现这个方法可能各有不同,父类具体去写这个方法就很没必要了,这就体现出抽象类的重要性了。这样别人看到你的代码,或你看到别人的代码,你就会注意抽象方法,而知道这个方法是在子类中实现的,所以,有个提示作用。

3、抽象类和接口的区别

一张图就可以说清楚:

技术分享图片

 

 4、什么时候使用抽象类和接口

  • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
  • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
  • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
  • 假如有一个接口,五个实现类,现在的需求可能要往接口加一个方法,这样就要改动五个实现类,但需求只需要改动其中两个实现类,可以再定义一个抽象类去实现这个接口,在抽象类中新增这个方法,然后其他两个实现类实现这个抽象类就好了,或者使用 Java 8 中的新特性,在接口中新增默认方法或者静态方法。

抽象类和接口的区别

原文:https://www.cnblogs.com/afei1013/p/14420328.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!