抽象类与接口的比较

两个类依赖的优先方案是抽象依赖。为了使代码之间的依赖成为抽象依赖,根据依赖倒转原则,我们在编程时通常会使得实现类依赖于一个接口类或一个抽象类。这里主要讨论下依赖接口与抽象类的优缺点。

  

 

 

  

1、              抽象类是可以有代码实现的,而接口中则不会存在具体的代码实现。这对于抽象类的好处是:抽象类可以方便地增加新的方法,其所有子类不需要修改代码就可以获得到这个方法属性;而如果在接口中新增一个方法,那么需要其所有实现类都新增这个方法,如果实现子类较多将会是一件很痛苦的事情。

 

2、              对于所有java类都可以实现多个接口,但是只能有一个超类。如果一个实体类依赖于多个接口,可以使用一个实现类来完成所有的接口功能;而如果是依赖于多个抽象类,那么就必须实现多个不同的实现类。

 

3、              也因为第二点区别,使得抽象子类只有一个主要类型,而接口实现类却可以有主要类型和次要类型。这里的主要类型、次要类型可以理解为向实体类提供的主要服务和次要服务。例如HashMap,它的主要类型为Map,次要类型包括Serializable的可序列化

 

 

可以看出抽象类与接口各有优缺点。为了能够在依赖编程中综合接口和抽象类的优点,可以使用下面的方式进行:

1、  抽象类可以实现多个接口,并可以对部分方法有代码实现。

2、  所有实现类都通过继承抽象类实现

3、  如果有需要增加新的方法,需要在接口、抽象类和需要进行的实现类中修改代码,而不用每一个子实现类都修改代码。



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值