前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDK 8 新特性 之 default关键字

JDK 8 新特性 之 default关键字

作者头像
Jacob丶
发布2020-08-05 17:58:40
3780
发布2020-08-05 17:58:40
举报
文章被收录于专栏:JacobJacob

前言

  • Jdk1.8之前的接口中只声明方法,方法具体实现应在子类中进行。
  • Jdk1.8打破了这样的用法:接口中可以实现具体的方法体,只需要加上关键字static或者default修饰即可。

1.default关键字

代码语言:javascript
复制
public interface UserService {
    //自定义方法
    void getUsername();
    //默认方法
    default void defaultUsername(){
        System.out.println("UserService>>>>>>>defaultUsername");
    }
    //默认方法,子类重写
    default void overrideDefaultUsername(){
        System.out.println("UserService>>>>>>>overrideDefaultUsername");
    }

}
public class UserServiceImpl implements UserService {

    @Override
    public void getUsername() {
        System.out.println("UserServiceImpl>>>>>>>>>getUsername");
    }

    @Override
    public void overrideDefaultUsername() {
        System.out.println("UserServiceImpl>>>>>>>>>overrideDefaultUsername");
    }

}
public class Test {

    public static void main(String[] args) {
        UserService userService = new UserServiceImpl();
        userService.getUsername();
        userService.defaultUsername();
        userService.overrideDefaultUsername();
    }

}
"结果打印数据:"
UserServiceImpl>>>>>>>>>getUsername
UserService>>>>>>>defaultUsername
UserServiceImpl>>>>>>>>>overrideDefaultUsername
 

2.static关键字

代码语言:javascript
复制
public interface UserService {

void getUsername();

default void defaultUsername(){
    System.out.println("UserService>>>>>>>defaultUsername");
}

default void overrideDefaultUsername(){
    System.out.println("UserService>>>>>>>overrideDefaultUsername");
}

static void staticUsername(){
    System.out.println("UserService>>>>>>>staticUsername");
}

}
public class UserServiceImpl implements UserService {

    @Override
    public void getUsername() {
        System.out.println("UserServiceImpl>>>>>>>>>getUsername");
    }

    @Override
    public void overrideDefaultUsername() {
        System.out.println("UserServiceImpl>>>>>>>>>overrideDefaultUsername");
    }

}
在子类中发现不能重写被static关键字修饰的方法。
public class Test {

    public static void main(String[] args) {
        UserService userService = new UserServiceImpl();
        userService.getUsername();
        userService.defaultUsername();
        userService.overrideDefaultUsername();
        UserService.staticUsername();
    }

}
"结果打印数据"
UserServiceImpl>>>>>>>>>getUsername
UserService>>>>>>>defaultUsername
UserServiceImpl>>>>>>>>>overrideDefaultUsername
UserService>>>>>>>staticUsername
 

总结   default:       1. detault关键字修饰的方法称为默认方法       2. 子类可以选择性的是否重写该方法       3. 接口中的default方法通过实例对象来调用   static:       1. static关键字修饰的方法称为静态方法       2. 子类不能重写该方法       3. 接口中的静态方法通过接口名.方法名()的方式来

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档