Java默认方法
示例1
interface InterfaceA {
default void say() {
System.out.println("InterfaceA");
}
}
public class DefaultMethod implements InterfaceA{
public static void main(String[] args) {
new DefaultMethod().say();
}
}
输出
InterfaceA
示例2 实现类重写default方法
interface InterfaceA {
default void say() {
System.out.println("InterfaceA");
}
}
public class DefaultMethod implements InterfaceA{
public void say() {
System.out.println("DefaultMethod");
}
public static void main(String[] args) {
new DefaultMethod().say();
}
}
输出
DefaultMethod
示例3
interface InterfaceA {
default void say(double m) {
System.out.println("InterfaceA");
}
}
public class DefaultMethod implements InterfaceA{
public void say(int m) {
System.out.println("DefaultMethod");
}
public static void main(String[] args) {
DefaultMethod defaultMethod = new DefaultMethod();
defaultMethod.say(1);
defaultMethod.say(1L);
}
}
输出
DefaultMethod
InterfaceA
示例4
interface InterfaceA {
default void say() {
System.out.println("InterfaceA");
}
}
interface InterfaceAA extends InterfaceA{
void say();
}
public class DefaultMethod implements InterfaceAA{
public static void main(String[] args) {
DefaultMethod defaultMethod = new DefaultMethod();
defaultMethod.say();
}
}
输出 报错
示例5
interface InterfaceA {
default void say() {
System.out.println("InterfaceA");
}
}
interface InterfaceAA extends InterfaceA{
void say();
}
public class DefaultMethod implements InterfaceAA{
public static void main(String[] args) {
DefaultMethod defaultMethod = new DefaultMethod();
defaultMethod.say();
}
@Override
public void say() {
System.out.println("defaultMethod");
}
}
输出
defaultMethod
示例6
interface InterfaceA {
default void say() {
System.out.println("InterfaceA");
}
}
interface InterfaceB {
default void say() {
System.out.println("InterfaceB");
}
}
public class DefaultMethod implements InterfaceA,InterfaceB{
public static void main(String[] args) {
DefaultMethod defaultMethod = new DefaultMethod();
defaultMethod.say();
}
}
输出 报错
示例7
interface InterfaceA {
default void say() {
System.out.println("InterfaceA");
}
}
interface InterfaceB {
default void say() {
System.out.println("InterfaceB");
}
}
public class DefaultMethod implements InterfaceA,InterfaceB{
public static void main(String[] args) {
DefaultMethod defaultMethod = new DefaultMethod();
defaultMethod.say();
}
@Override
public void say() {
InterfaceA.super.say();
InterfaceB.super.say();
}
}
输出
InterfaceA
InterfaceB
Java默认方法的更多相关文章
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...
- Java 8函数编程轻松入门(三)默认方法详解(default function)
default出现的原因 Java 8中对API最大的改变在于集合类,Java在持续演进,但是它一直保持着向后兼容. 在Java 8中为Collection接口增加了stream方法,这意味着所有实现 ...
- JAVA 8 默认方法-Default Methods
什么是默认方法-Default Methods 简单的说,就是可以在接口中定义一个已实现方法,且该接口的实现类不需要实现该方法: 如下示例: interface GreetingService { v ...
- [转]深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
以下内容转自: 作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-l ...
- paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型
paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
- Java 8 默认方法和多继承深入解析
以前经常谈论的Java对比c++的一个优势是Java中没有多继承的问题. 因为Java中子类只能继承(extends)单个父类, 尽管可以实现(implements)多个接口,但是接口中只有抽象方法, ...
- Java 8新特性探究(一) JEP126特性lambda表达式和默认方法
Lambda语法 函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的java.la ...
- Java 8 特性 —— 默认方法和静态方法
Java 8 新增了接口的默认方法.简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法.我们只需在方法名前面加个 default 关键字即可实现默认方法. 为什么要有这个特性?之前的 ...
- Java 8 默认方法
转自:https://www.runoob.com/java/java8-default-methods.html Java 8 新增了接口的默认方法. 简单说,默认方法就是接口可以有实现方法,而且不 ...
随机推荐
- Java基础——过滤器和监听器
什么是过滤器? Servlet过滤器和Servlet十分相似,但它具有拦截客户端请求的功能,Servlet过滤器可以改变请求中的内容,来满足实际开发中的需要.对于开发人员而言,过滤器实际上就是在Web ...
- 如何打开DOS控制台及常见DOS命令作用
如何打开DOS控制台? * A:xp下如何打开DOS控制台? * a:开始--程序--附件--命令提示符 * b:开始--运行--cmd--回车 * c:win+r--cmd- ...
- luogu P3387 【模板】缩点_拓扑排序
还是很好些的. Code: #include <stack> #include <cstdio> #include <algorithm> #include < ...
- Unity2D 小游戏之 RocketMouse
这个小游戏源自这里.这几天闲时捡了点 Unity(很久没有摸它了),顺手将这个小游戏移植到了 Unity5.5.0,除了 Parallax Scrolling 还有点小问题外,其它功能全部完整.部分代 ...
- git--客户端管理工具初步使用
说点废话哈 小白一枚, 今年3月份进入自己的第一家公司, 开始成为前端中的一份子,好在公司里有位和我一同进来的一位老哥带着我,从老哥身上学到的知识不多,(因为和老哥只相处工作了三个月,因为家里的事情, ...
- C文件I/O超详细教程
本文主要参考了C Primer Plus (5th & 6th Edition) 您可以选择本文的部分内容来读,有些内容对于不熟悉MS-DOS的读者可能过于晦涩难懂. C语言文件基本知识 文件 ...
- css预编译器——Less的使用
方法一:仅介绍在客户端环境下使用的方法 1 新建test.less并引入.less该文件(和css一样在head处引入),注意rel="stylesheet/less": &l ...
- linux内核(五)虚拟文件系统
虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备. 虚拟文件系统本身是linux内核的一部分,是纯软件 ...
- Oracle expdp导出多表或表中的部分数据
http://blog.itpub.net/16582684/viewspace-755072/
- ASP.NET-EF基础知识
定义 asp.net Entity Framework是微软以ADO.NET为基础发展出来的对象关系对应(OR Mapping)解决方案. 三种EF工作模式(自己理解的) 从数据库表创建类 从类创 ...