接口

在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 关系,接口与实现类的关系只是定义了行为,本质上并无实质关系,只是契约层面的关系。

jdk8下的接口和抽象类的更多相关文章

  1. 浅谈Java中接口与抽象类的异同

    浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...

  2. 4、java基础:JDK8接口新特性以及接口和抽象类区别

    在jdk8之前,interface之中可以定义变量和方法,变量必须是public.static.final的,方法必须是public.abstract的.由于这些修饰符都是默认的,所以在JDK8之前, ...

  3. C# 接口与抽象类的区别? 情景下使用接口,什么情景下使用抽象类?

    接口与抽象类的区别: 接口支持多继承:抽象类不能实现多继承. 接口可以用于支持回调:抽象类不能实现回调,因为继承不支持. 接口只包含方法.属性.索引器.事件的签名,但不能定义字段和包含实现的方法:抽象 ...

  4. 接口和抽象类的区别,注意JDK8的接口可以有实现。

    Java中,抽象类和接口有相似的地方.下面我们就来细说说接口和抽象类的异同. 首先是相同的地方: 1. 接口和抽象类都能定义方法和属性. 2. 接口和抽象类都是看作是一种特殊的类.大部分的时候,定义的 ...

  5. Java之集合(一)接口及抽象类

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7278655.html 1.前言 从本章开始介绍Java的集合类,这些类主要存在于java.util包下,该系列基 ...

  6. Java基础(四)--接口和抽象类

    接口和抽象类能够体现OOP的抽象,而接口和抽象类也是日常开发中经常用到的 抽象方法: 抽象方法就是被abstract修饰的方法,只有声明,没有实现,也就是没有方法体 public abstract v ...

  7. 从接口、抽象类到工厂模式再到JVM来总结一些问题

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...

  8. (转)深入理解Java的接口和抽象类

    原文地址: http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP ...

  9. c++ 接口和抽象类

    其实对抽象类与接口的区别一直是搞不太清楚,最近正在学习<设计模式>,期间用到了很多c++多态的知识.这是才恍然发现,是应该整理下这方面的知识了.但在翻阅书本.上网查阅资料之际,发现有篇文章 ...

随机推荐

  1. stat filename

    查看文件的mtime,atime,ctime 3个时间

  2. ps的参数解释

    [root@bogon ~]# ps axuUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND user启动进程的用户 pid  表示进程标志 ...

  3. 如何构建一个多人(.io) Web 游戏,第 2 部分

    原文:How to Build a Multiplayer (.io) Web Game, Part 2 探索 .io 游戏背后的后端服务器. 上篇:如何构建一个多人(.io) Web 游戏,第 1 ...

  4. Upload - Labs (上)

    Pass - 01: 1.尝试上传一个php文件:aaa.php,发现只允许上传某些图片类型,用bp抓包,发现http请求都没通过burp就弹出了不允许上传的提示框,这表明验证点在前端,而不在服务端 ...

  5. XSS - Labs 靶场笔记(下)

    Less - 11: 1.观察界面和源代码可知,依旧是隐藏表单 2.突破点是 $str11=$_SERVER['HTTP_REFERER']; (本题为HTTP头REFERER注入) 3.因此构造pa ...

  6. ctfhub技能树—彩蛋

    彩蛋题建议大家首先自己动手去找一找 做 好 准 备 后 再 看 下 文 !           1.首页 使用域名查询工具查询子域名 2.公众号 此题关注ctfhub公众号即可拿到,不过多赘述. 3. ...

  7. 删除开发账号的ACCESS KEY

    大家都知道,当申请一个开发账号来开发程序的时候需要一个ACCESS key,这个key我们可以通过系统管理员在OSS上注册, 也可以通过一些软件来计算,比如zapgui.EXE,但是当用软件注册完,不 ...

  8. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析

    作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池.按照发展历程,业界知名的数据库连接池有以下几种:c3p0.DBCP.Tomcat JDBC ...

  9. 基于Redo Log和Undo Log的MySQL崩溃恢复流程

    在之前的文章「简单了解InnoDB底层原理」聊了一下MySQL的Buffer Pool.这里再简单提一嘴,Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子. ...

  10. detect data races The cost of race detection varies by program, but for a typical program, memory usage may increase by 5-10x and execution time by 2-20x.

    小结: 1. conflicting access 2.性能危害 优化 The cost of race detection varies by program, but for a typical ...