我的Java学习历程03【Java8接口新特性-下】
在上一篇文章中,我介绍了Java8接口的静态方法和默认方法的声明与调用,这也为我第一篇文章中提到的父类和接口类方法执行的优先顺序提供了测试的方法,通过调用接口和父类的同名方法来查看执行结果,可以直观的看出他们的执行顺序。
接口与父类中同名方法的执行顺序
代码如下
interface Java8Interface{//默认方法public default void method2(){System.out.println("我是接口的method2");}}class SubClassTest{public static void main(String[] args) {SubClass sC1 = new SubClass();sC1.method2(); //我是父类的method2}
}class SubClass extends SuperClass implements Java8Interface{}class SuperClass{public void method2(){System.out.println("我是父类的method2");}
}
知识点1:如果子类(或者实现类)继承的父类和实现的接口类声明了同名的方法,那么子类在没有重写此方法的情况下,默认调用的是父类的方法。这就是类优先原则
当我想测试接口与接口间的方法执行的优先顺序时,编译报错了,所以被实现的多个接口中应该不允许出现同名方法
知识点2:接口和父类的方法可以同名,子类(或者实现类)优先调用父类的同名方法;实现类实现了多个接口时,不允许出现同名方法,否则会出现编译错译。这就是接口冲突
如何在子类(或实现类)的方法中调用父类、接口中被重写的方法
代码如下
class SubClass extends SuperClass implements Java8Interface{public void method2(){System.out.println("这是被重写的method2");}public void myMethod(){//调用自己重写的方法method2(); //这是被重写的method2//调用父类声明的方法super.method2(); //我是父类的method2//调用接口中的默认方法Java8Interface.super.method2(); //我是接口的method2}
}class SuperClass{public void method2(){System.out.println("我是父类的method2");}
}
接口新特性小应用
public class InterfaceTest2 {}interface Steam{public default void buy(){System.out.println("来我的平台,下载游戏快!");}
}interface Epic{public default void buy(){System.out.println("来我的平台,每周喜加一");}
}class Wegame{public void buy(){System.out.println("来我的平台,马总都亏的坐公交了");}
}class Player extends Wegame implements Steam,Epic{//国内玩家除了在腾讯爸爸的游戏平台上消费以外,还有Steam和Epic可以选择public void buyGame(){buy();//如果直接调用的buy方法的话,那我们就只能玩腾讯游戏了Steam.super.buy();//当然,我们也可以通过其他办法来购买其他平台的游戏Epic.super.buy();}
}
the end
我的Java学习历程03【Java8接口新特性-下】相关推荐
- 学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类
1.Lambda表达式 用匿名内部类的方法去创建多线程1.new Thread2.参数传递new Runnable3.重写run方法4.在run方法中去设置线程任务5.调用start问题:我们最终目标 ...
- java编辑遗忘曲线代码,java8的新特性 - 天使broken的个人空间 - OSCHINA - 中文开源技术交流社区...
java8出来好长一段时间了但是一直都没什么机会在项目中使用.今晚有时间就了下 总结了下. 特性1:Lambda 表达式 老版本是这个样子的排序 List names = Arrays.asList( ...
- 深圳Java培训学习:Java8.0新特性之Lambda表达式--【千锋】
深圳Java培训学习:Java8.0新特性之Lambda表达式–[千锋] 前言 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.本篇文章,主要给大家介绍的是lambda表 ...
- Java学习历程——JVM的JMM模型
Java学习历程--浅析Java内存模型(JMM) 我们来看下面的代码,运行程序,我们会发现程序运行后一直没有结束. package com.java.demo.j,import java.util. ...
- Java学习历程之----进阶篇(十一)
千禧难题之二: 霍奇猜想:在非奇异复射影代数簇上, 任一霍奇类是代数闭链类的有理线性组合.它是关于非奇异复代数簇的代数拓扑和它由定义子簇的多项式方程所表述的几何的关联的猜想.由威廉·瓦伦斯· ...
- Java学习历程之----提升篇(六)
科普 知识 前言 前面我们学习了Java语言的三大特性----继承,封装和多态,在前面的Java学习历程之----进阶篇(一)中我们学习到,在面向对象中,类和对象是最基本.最重要的组成单元.所有的对象 ...
- JAVA8的新特性之函数式接口
JAVA8的新特性之函数式接口 1.Lambda表达式使用的前提,就是接口必须是一个函数式接口 2.定义 在接口中,只有一个抽象方法 3.检查是否是函数式接口用的注解 @FunctionalInter ...
- 零基础入门学习Java,这几本经典的Java学习书籍,可以推荐你看下,绝对受益匪浅!
书是人类不可或缺的精神食粮.正如高尔基所言:书是人类进步的阶梯.借名人名言给大家推荐一些对java学习有用的经典书籍,对程序员来说,我觉得最佳学习方式还是看书,看视频花费时间太长,而阅读博客则不够系统 ...
- python零基础推荐书籍_零基础入门学习Java,这几本经典的Java学习书籍,可以推荐你看下,绝对受益匪浅!...
书是人类不可或缺的精神食粮.正如高尔基所言:书是人类进步的阶梯.借名人名言给大家推荐一些对java学习有用的经典书籍,对程序员来说,我觉得最佳学习方式还是看书,看视频花费时间太长,而阅读博客则不够系统 ...
- java8:新特性及Lamber表达式语法及四大函数接口
java8:新特性及Lamber表达式 如果左侧只有一个参数可以省略括号,如果右侧只有一个表达式可以省略括号 如果左侧有一个参数也可以添加括号,可以不写参数类型,有类型推断 如果右侧有返回值,一个表达 ...
最新文章
- 查看oracle连接数的消耗情况
- Java的getcelltype用法_java getCellType的替代方法
- vector 查找结构体对象_面试大厂回来,我狠补了一把算法和数据结构
- Java的native方法
- c语言编译器储存有什么用,C编译器怎么样对内存划分和使用
- gulpsass安装配置
- 因计算机中丢失msvcr120.dll,msvcr120.dll一键修复工具 | 麦田一棵葱
- 南开100题C语言(031-040)
- 初级产品经理的日常工作流程汇总
- GPU与CPU的区别
- 运用卡方检验(独立性检验)来分析问卷的两个问题之间的关联性
- 康考迪亚大学应用计算机科学,康考迪亚大学.pdf
- 聂易铭:3月11日数字货币插针诱惑,做多只能浅尝辄止
- 服务器可视化显示空间,云服务器可视化面板
- 微信公众号开发:如何获取openId(最简单的方式)
- 心流——微妙的人际关系
- conda安装cv2库
- root 启动mysql_非root用户随开机而启动mysql服务
- 21天设计Arm芯片|移知公开课
- win7中解决nodejs版本问题
热门文章
- 服务器lsass系统错误,lsass.exe-系统错误,终结点格式无效 windows2003服务器出错
- 百度网盘下载加速器--ENFI下载器、Speedkoala、PanDownload、SpeedPan
- ruby + watir 自动化上传图片文件解决方案
- Python 文件路径
- PDF文件怎么转换成CAD格式?教你几种转换方法
- k1075停运吗_全国铁路大调图,怀化火车站6对旅客列车停运!
- flash播放器android,Flash播放器
- 浅谈unicode字符集及编码方式
- SSM实现会议室预约管理系统
- 清华EMBA课程系列思考之十七(1) -- 新企业的孵化与创业投资