JDK1.8 —— 接口定义增强
2024-09-02 17:12:06
使用default和static定义接口方法
JDK1.8(jre8)以后,接口中不在仅仅只允许定义抽象方法,开始允许定义普通方法了;而普通方法需要用default声明。
interface IMessage {
public void print(); // 一个接口定义的抽象方法
default void fun() {// 接口中定义的普通方法
//
System.out.println("Hello,World!") ;
}
}
class MessageImpl implements IMessage {
public void print() {
System.out.println("Hello,World!") ;
}
}
public class TestDemo {
public static void main(String [] args) {
IMessage msg = new MessageImpl() ;
msg.fun() ;// 直接调用在接口类中定义的方法
}
}
上例代码中,使用defautl定义方法,defautl定义的方法是接口中的普通方法,可以被外部类通过接口类直接调用使用该普通方法。
interface IMessage {
public void print(); // 一个接口定义的抽象方法
default void fun() {// 接口中定义的普通方法
//
System.out.println("Hello,World!") ;
}
static void get() {
System.out.println("Hello,Woeld!") ;
}
}
class MessageImpl implements IMessage {
public void print() {
System.out.println("Hello,World!") ;
}
}
public class TestDemo {
public static void main(String [] args) {
IMessage msg = new MessageImpl() ;
msg.fun() ;// 直接调用在接口类中定义的方法
}
}
上例代码使用static方法定义,由此可以直接通过类调用方法,则不在实例化接口则可以调用。
~~~~~~~~
###
总结:
接口中default或static方法定义是为了避免子类重复的实现同样的代码
接口的使用还应以使用抽象方法为主
最新文章
- Scrum Meeting (Oct. 27 2014)
- C语言setjmp函数使用
- Css3中的响应式布局的应用
- 关于我的FGC的OAuth2.0认证。
- Android Toast简介
- BUG出现的地方真的令我这个测试新人想象不到
- 远程连接到Fedora
- SQL learning
- SVG视野
- 第38章 刷新令牌 - Identity Server 4 中文文档(v1.0.0)
- BootStrap table隐藏列两种方式 (踩坑)
- js将网址转为二维码并下载图片
- SecureCRT显示乱码的解决办法
- 2018.09.10 loj#10172. 涂抹果酱(状压dp)
- 读取Maven项目下resources目录下的配置文件(properties为例)
- xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................
- 关于numpy mean函数的axis参数
- ubuntu 搜狗输入法成功安装
- EL表达式获取对象属性的原理
- Spring Bean的作用域类型