码迷,mamicode.com
首页 > 其他好文 > 详细

详解接口与抽象类的异同点

时间:2020-03-15 09:22:27      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:私有   规范   一段   创建   创建对象   作用   对象   jdk8   异同点   

相同之处
  1. 接口和抽象类都不能被实例化,只能被其他类实现和继承
  2. 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类必须实现这些抽象方法
     

不同之处

从设计层面来说

抽象是对类的抽象,是一种模板设计,接口是对行为的抽象,是对行为的规范

从组成上来说

  1. 接口里只能包含抽象方法、静态方法、默认方法和私有方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。
  2. 接口里只能定义公共静态常量,不能定义普通成员变量;抽象类既可以定义普通成员变量也可以定义静态常量。
  3. 接口里不包含构造器;抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。
  4. 接口里不能包含初始化;但抽象类则完全可以包含初始化块

从用法上来说

一个类最多只能有一个父类,包括抽象类;但一个类可以实现多个接口
 

补充

  1. 抽象类是从多个类中抽象出来的模板,接口是更彻底的抽象,接口定义了多个类共同的行为规范,接口实现了规范与实现分离
  2. 一个接口可以有多个父接口,但接口只能继承接口,不能继承类
  3. JDK8 的时候接口可以有默认方法和静态方法功能。
  4. JDK9 在接口中引入了私有方法和私有静态方法。
  5. 私有方法主要作用就是作为工具方法使用,为接口中的类方法和默认方法提供支持。Java8允许在接口中定义带方法体的抽象方法和类方法,当两个默认方法或者类方法中包含一段相同的实现逻辑时,程序必然考虑将这段实现逻辑抽取成工具方法,而工具方法应该是被隐藏的
  6. 默认方法允许在不破坏已使用接口的代码的情况下,在接口中增加新的方法。

详解接口与抽象类的异同点

标签:私有   规范   一段   创建   创建对象   作用   对象   jdk8   异同点   

原文地址:https://blog.51cto.com/13646338/2478221

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!