jdk8下的接口和抽象类
接口
在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下的接口和抽象类的更多相关文章
- 浅谈Java中接口与抽象类的异同
浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...
- 4、java基础:JDK8接口新特性以及接口和抽象类区别
在jdk8之前,interface之中可以定义变量和方法,变量必须是public.static.final的,方法必须是public.abstract的.由于这些修饰符都是默认的,所以在JDK8之前, ...
- C# 接口与抽象类的区别? 情景下使用接口,什么情景下使用抽象类?
接口与抽象类的区别: 接口支持多继承:抽象类不能实现多继承. 接口可以用于支持回调:抽象类不能实现回调,因为继承不支持. 接口只包含方法.属性.索引器.事件的签名,但不能定义字段和包含实现的方法:抽象 ...
- 接口和抽象类的区别,注意JDK8的接口可以有实现。
Java中,抽象类和接口有相似的地方.下面我们就来细说说接口和抽象类的异同. 首先是相同的地方: 1. 接口和抽象类都能定义方法和属性. 2. 接口和抽象类都是看作是一种特殊的类.大部分的时候,定义的 ...
- Java之集合(一)接口及抽象类
转载请注明源出处:http://www.cnblogs.com/lighten/p/7278655.html 1.前言 从本章开始介绍Java的集合类,这些类主要存在于java.util包下,该系列基 ...
- Java基础(四)--接口和抽象类
接口和抽象类能够体现OOP的抽象,而接口和抽象类也是日常开发中经常用到的 抽象方法: 抽象方法就是被abstract修饰的方法,只有声明,没有实现,也就是没有方法体 public abstract v ...
- 从接口、抽象类到工厂模式再到JVM来总结一些问题
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 J ...
- (转)深入理解Java的接口和抽象类
原文地址: http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP ...
- c++ 接口和抽象类
其实对抽象类与接口的区别一直是搞不太清楚,最近正在学习<设计模式>,期间用到了很多c++多态的知识.这是才恍然发现,是应该整理下这方面的知识了.但在翻阅书本.上网查阅资料之际,发现有篇文章 ...
随机推荐
- stat filename
查看文件的mtime,atime,ctime 3个时间
- ps的参数解释
[root@bogon ~]# ps axuUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND user启动进程的用户 pid 表示进程标志 ...
- 如何构建一个多人(.io) Web 游戏,第 2 部分
原文:How to Build a Multiplayer (.io) Web Game, Part 2 探索 .io 游戏背后的后端服务器. 上篇:如何构建一个多人(.io) Web 游戏,第 1 ...
- Upload - Labs (上)
Pass - 01: 1.尝试上传一个php文件:aaa.php,发现只允许上传某些图片类型,用bp抓包,发现http请求都没通过burp就弹出了不允许上传的提示框,这表明验证点在前端,而不在服务端 ...
- XSS - Labs 靶场笔记(下)
Less - 11: 1.观察界面和源代码可知,依旧是隐藏表单 2.突破点是 $str11=$_SERVER['HTTP_REFERER']; (本题为HTTP头REFERER注入) 3.因此构造pa ...
- ctfhub技能树—彩蛋
彩蛋题建议大家首先自己动手去找一找 做 好 准 备 后 再 看 下 文 ! 1.首页 使用域名查询工具查询子域名 2.公众号 此题关注ctfhub公众号即可拿到,不过多赘述. 3. ...
- 删除开发账号的ACCESS KEY
大家都知道,当申请一个开发账号来开发程序的时候需要一个ACCESS key,这个key我们可以通过系统管理员在OSS上注册, 也可以通过一些软件来计算,比如zapgui.EXE,但是当用软件注册完,不 ...
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池.按照发展历程,业界知名的数据库连接池有以下几种:c3p0.DBCP.Tomcat JDBC ...
- 基于Redo Log和Undo Log的MySQL崩溃恢复流程
在之前的文章「简单了解InnoDB底层原理」聊了一下MySQL的Buffer Pool.这里再简单提一嘴,Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子. ...
- 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 ...