接口

在java8中,接口可以定义变量和方法,其中变量必须为 public && static && final;

方法必须为public && (abstract || default || static)。

jdk8只能通过接口类调用接口中的静态方法,但是对于default方法来说,如果两个接口中定义了相同方法签名的default方法,且实现类同时继承了两个接口。则在编译时会报错。此时可以让实现类重写该方法。

抽象类

包含一个或多个抽象方法的类,必须被申明为抽象类。

但不是抽象类中所有的方法都是抽象方法,除了抽象方法外,抽象类还可以拥有具体的方法以及具体数据

一个类如果继承一个抽象类,必须实现该抽象类里声明的抽象方法

区别 抽象类 接口
继承/实现 只允许继承单个抽象类,可以不实现所有的抽象方法,但是子类也必须申明为抽象类 可以继承多个接口,但继承的类必须实现所有接口的所有抽象方法
变量 可以有具体的变量 只能有静态常量 public static final
方法 抽象类的方法可以是public,protected,default,但是不允许private 接口的方法必须是public,可以有抽象abstract,默认defualt,静态static
构造函数 拥有默认构造函数 无构造函数
子类实现 Extends Implment
设计理念和使用场景 是对同一个类型下共有的特性抽象。抽象类是一种 自下而上 的设计,先有了子类,然后提取子类公有的特性与行为,构成抽象类。 抽象类与子类是 is-a 关系,父类和派生的子类在概念上是相同的,存在的是父子关系,是一种重耦合。 它定义了一种规范,更多的是辐射类型的设计。接口是一种 自上而下 的设计,先规定行为方法,然后由类去实现这些行为,就可以成为接口的实现类。接口与实现类是 like-a 关系,接口与实现类的关系只是定义了行为,本质上并无实质关系,只是契约层面的关系。

最新文章

  1. 支持 .NET Core 的 Memcached 客户端 EnyimMemcachedCore
  2. 应用市场中包名(package name)的唯一性
  3. Java邮件发送与接收原理
  4. PHP mkdir 0777权限问题
  5. C++术语俗解
  6. Hibernate的面试题
  7. CSS尺寸单位 % px em rem 详解
  8. Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析
  9. memcpy、memmove、memset
  10. jdom处理的XML Document 和String 之间的相互转化
  11. ubuntu ll命令
  12. XC通讯录
  13. 对于volatile的理解
  14. CoFun 1613 单词连接
  15. 随机获取部分List<Object>集合
  16. 使用hql动态创建对象问题
  17. 【BZOJ4764】弹飞大爷
  18. nginx安装ngx_lua_waf防护
  19. puppet确保程序运行
  20. 记录一次nginx配置vhost的小bug

热门文章

  1. 【MySql】[ERROR] Can't read from messagefile '/usr/share/mysql/english/errmsg.sys'
  2. ctfhub技能树—文件上传—文件头检查
  3. 【对线面试官】Java多线程基础
  4. pandas高级操作
  5. 原生ajax分享
  6. 大数据系列4:Yarn以及MapReduce 2
  7. pip freeze 需求文件requirements.txt的创建及使用 虚拟环境
  8. 你可能不知道的 transition 技巧与细节
  9. (十二)整合 Shiro 框架,实现用户权限管理
  10. redis性能优化、内存分析及优化