抽象类和接口的区别

1、什么是抽象类

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

2、为什么使用抽象类

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

3、抽象类和接口的区别

一张图就可以说清楚:

 

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

  • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
  • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
  • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
  • 假如有一个接口,五个实现类,现在的需求可能要往接口加一个方法,这样就要改动五个实现类,但需求只需要改动其中两个实现类,可以再定义一个抽象类去实现这个接口,在抽象类中新增这个方法,然后其他两个实现类实现这个抽象类就好了,或者使用 Java 8 中的新特性,在接口中新增默认方法或者静态方法。
posted @   悠悠南山下  阅读(4842)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示