java中抽象类和接口的比较

一、相同点
1. 接口和抽象类都位于继承树的顶层,且都不能被实例化,用于被其他类实现或继承
2. 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法

二、不同点:
首先,可以这么理解:
接口是多个模板间的耦合标准,当多个应用程序之间使用接口时,接口则是多个程序之间的通信标准,它类似于一个系统中的“总纲”。因此,接口不应该经常改变,一旦接口改变,会导致系统中大部分的类都需要改写。
抽象类作为系统中多个子类的共同抽象父类,它相当于系统实现中的中间产品,这个产品已经实现了部分功能(即已经提供的实现方法),但这个产品并没有完善,需要进一步加工处理,这里处理可能会有不同的几种方式。
除此之外,接口和抽象类的细节差别总结如下:
注:这里借鉴了java接口和抽象类的区别
1. 接口里只能包含抽象方法,不包含已经提供实现的方法;抽象类可以有默认的方法实现
2. 接口里不能定义静态方法;抽象类里可以定义静态方法
3. 接口方法默认的修饰符是public,不能用其他的修饰符;抽象方法可以有publicprotecteddefault这些修饰符
4. 接口里不包含构造器;抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作
5. 接口里不能包含初始化块;但抽象类则完全可以包含初始化块
6. 一个类最多只能有一个直接父类,包括抽象类;但一个类可以实现多个接口,通过实现多个接口来弥补java单继承的不足

三、应用场景:
1. 如果你拥有一些方法并且想让它们中的一些有默认实现,那么就使用抽象类
2. 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它
3. 如果基本功能在不断改变,那么就需要使用抽象类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值