interface中定义default方法和static方法
interface的default方法和static方法
- 接口中可以定义static方法,可通过接口名称.方法名()调用,实现类不能继承static方法;
- 接口中可以定义default方法,default修饰的方法有方法体,表示这个方法的默认实现,子类可以直接调用,可以选择重写或者不重写;
- 当实现类实现的多个接口中,有方法签名相同的default方法时,必须重写该方法;
接口一:
package com.skd.interfacemethod; /**
* @Description
* @Author virgosnail
* @Date 2018/12/12
*/ public interface Human { /**
* 必须被重写
*/
void oldMethod(); /**
* 实现类可以选择重写,也可以不重写
*/
default void hi(){
System.out.println("interface default method");
} /**
* 不能被实现类重写
*/
static void hello(){
System.out.println("interface static method");
}
}
接口二:
package com.skd.interfacemethod; /**
* @Description
* @Author virgosnail
* @Date 2018/12/12 20:59
*/ public interface Humen { default void hi(String aa){
System.out.println("interface default method");
}
}
实现类:
package com.skd.interfacemethod; /**
* @Description
* @Author virgosnail
* @Date 2018/12/12
*/ public class Person implements Human,Humen { @Override
public void oldMethod() { } /**
* 实现的多个接口中有方法签名相同的default 方法时,实现类必须重写该方法
*/
@Override
public void hi() { }
/**
* 实现类不能继承接口的static 方法
*/
}
测试类:
package com.skd.interfacemethod; /**
* @Description
* @Author virgosnail
* @Date 2018/12/12
*/ public class Test {
public static void main(String[] args) {
// interface 的 default 方法通过实现类的实例对象调用
new Person().hi();
// interface 的 static 方法通过 接口名称.方法名称直接调用
Human.hello(); }
}
interface中定义default方法和static方法的更多相关文章
- JS中的call()方法和apply()方法用法总结
原文引自:https://blog.csdn.net/ganyingxie123456/article/details/70855586 最近又遇到了JacvaScript中的call()方法和app ...
- js中的splice方法和slice方法简单总结
slice:是截取用的 splice:是做删除 插入 替换用的 slice(start,end): 参数: start:开始位置的索引 end:结束位置的索引(但不包含该索引位置的元素) 例如: va ...
- JS中的call()方法和apply()方法用法总结(挺好 转载下)
最近又遇到了JacvaScript中的call()方法和apply()方法,而在某些时候这两个方法还确实是十分重要的,那么就让我总结这两个方法的使用和区别吧. 1. 每个函数都包含两个非继承而来的方法 ...
- TP框架中的A方法和R方法
ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内 ...
- Mapper类/Reducer类中的setup方法和cleanup方法以及run方法的介绍
在hadoop的源码中,基类Mapper类和Reducer类中都是只包含四个方法:setup方法,cleanup方法,run方法,map方法.如下所示: 其方法的调用方式是在run方法中,如下所示: ...
- java 中的set方法和get方法的理解
get的意思是获取,set的意思是设置. get方法和set方法是实现类的封装访问的很好的工具. 当类中的变量设为private 时,他的意思就是说,只能通过自身和子类的访问,但是对于别的其他的类来说 ...
- Android中的Sqlite中的onCreate方法和onUpgrade方法的执行时机
1.今天在做数据库升级的时候,遇到一个问题,就是onCreate方法和onUpgrade方法的执行时机的问题,这个当时在操作的时候,没有弄清楚,很是迷糊,后来看了相关的博客由于转发受限所以copy了一 ...
- Hibernate中Session.get()方法和load()方法的详细比较
一.get方法和load方法的简易理解 (1)get()方法直接返回实体类,如果查不到数据则返回null.load()会返回一个实体代理对象(当前这个对象可以自动转化为实体对象),但当代理对象被调用 ...
- 3-自定义构造方法和description方法
http://www.cnblogs.com/mjios/archive/2013/04/19/3031412.html -自定义构造方法和description方法 1 默认的构造方法是什么?有什么 ...
随机推荐
- Asp.net之Sql注入与Parameter对象
一.Sql注入实例 using System; using System.Collections.Generic; using System.Data; using System.Data.SqlCl ...
- linux创建快捷方式ln命令
创建快捷方式命令 ln -s 源文件 目标目录 //目标目录可以是完整路径,也可以是当前目录下的路径 ln 源文件 目标目录 在桌面上添加一个,创建一个文件夹(这里是work)的快捷方式 //源 cd ...
- vue.js插值,插入图片,属性
<html><head><title>Insert title here</title><script type="text/javas ...
- Linux Tomcat安装部署项目
一.上传Tomcat服务器
- html转换pdf
项目需求:移动端APP项目需要在手机上签订合同,将html转换成pdf格式的文件 解决方案:是用插件wkhtmltopdf; 记录用法:1.网址https://wkhtmltopdf.org/ 下载压 ...
- Oracle导出csv时数字不变成科学计数法
导出成CSV后,用excel打开,点击excel的[数据]→[自文本],选择导出的csv文件,下一步,分隔符选择[逗号],下一步,选择所有列“按住shift+鼠标左键选取”后,列数据格式选文本,[完成 ...
- 信号基础知识----线性调频信号LFM //matlab命令:chirp
%关于线性调频信号(LFM) %参考书目:声呐技术,第二章P33 clc;close all;clear all;%参数----------------------------------f0=100 ...
- [leetcode]150. Evaluate Reverse Polish Notation逆波兰表示法
Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...
- Centos7下安装Docker[z]
[z]https://www.cnblogs.com/qgc1995/p/9553572.html https://yq.aliyun.com/articles/691610?spm=a2c4e.11 ...
- mysql启动错误,提示crash 错误
:: mysqld_safe Starting mysqld daemon with databases from /data/mysql_data -- :: [Note] Plugin 'FEDE ...