Java中abstract和interface的区别

关于abstract与interface的相同点


首先,把他们拿在一起比较,说明他们之间有联系,那就是他们都是对于对象的一个抽象定义(笔者的理解,也许还有其他),它是我们对于问题领域的分析和总结得出的抽象概念,它们是没有任何操作和实际动作的。正是由于这两种机制的存在才赋予了java强大的面向对象能力。


从使用角度来说:

 不同点:

        1.abstract 修辞的类,可以有默认操作和动作,interface没有。也就说abstract中可以有存在实现部分的方法,interface都是没有具体实现方法体的;

        2.abstract 在子类中使用的时候,使用关键字extends继承,interface使用implements继承;

        3.abstract 不能使用多继承,interface可以。那么这里可以理解出,当具体实现这两种类型的类的时候,abstrcat理解为“is a”的关系,也就是说实现他的子类就是这种类型,

而interface理解为“like a”的关系。那么具体这两种类别这么选择,可以从需求的主体出发,比如我们常见的带小电灯的移动电源,那么这里就有三个对象:带电灯的电源(PowerBankCanLight)、电源(PowerBank)、小电灯(Light),我们目标是创建一个带电灯的电源这个对象,那么这个对象主体他是一个电源,附带的有电灯的功能,那么就是最终要的对象就是 is a 电源 like a 小电灯,具体如下:

public abstract class PowerBank{};

public interface Light{}

public class PowerBankCanLight extends PowerBank implements Light{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值