`
wobfei
  • 浏览: 146988 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

抽象类与接口的比较

阅读更多

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

  

 

 

  

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

 

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

 

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

 

 

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

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

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

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



 

  • 大小: 18.9 KB
  • 大小: 9.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics