使用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方法定义是为了避免子类重复的实现同样的代码

  接口的使用还应以使用抽象方法为主

最新文章

  1. Scrum Meeting (Oct. 27 2014)
  2. C语言setjmp函数使用
  3. Css3中的响应式布局的应用
  4. 关于我的FGC的OAuth2.0认证。
  5. Android Toast简介
  6. BUG出现的地方真的令我这个测试新人想象不到
  7. 远程连接到Fedora
  8. SQL learning
  9. SVG视野
  10. 第38章 刷新令牌 - Identity Server 4 中文文档(v1.0.0)
  11. BootStrap table隐藏列两种方式 (踩坑)
  12. js将网址转为二维码并下载图片
  13. SecureCRT显示乱码的解决办法
  14. 2018.09.10 loj#10172. 涂抹果酱(状压dp)
  15. 读取Maven项目下resources目录下的配置文件(properties为例)
  16. xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................
  17. 关于numpy mean函数的axis参数
  18. ubuntu 搜狗输入法成功安装
  19. EL表达式获取对象属性的原理
  20. Spring Bean的作用域类型

热门文章

  1. xamarin Android 监听音量键(上)
  2. webUploader上传大视频文件相关web.config配置
  3. 阿里云centos7安装python3.7.4和pip3
  4. hadoop mapreduce求解有序TopN
  5. 基于TCP连接的socket套接字编程
  6. .gitignore 文件没起作用
  7. 初学JavaScript正则表达式(一)
  8. 攻防世界web之ics-05
  9. 全网最新方法:win10下如何安装和配置64位JDK-13
  10. luoguP4248 [AHOI2013]差异