Java8 default关键字介绍

default关键字介绍

default是在java8中引入的关键字,也可称为Virtual extension methods——虚拟扩展方法。是指,在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。

接口中已经有1个方法 且有一个实现类,如果为接口新增一个方法,这需要修改的实现类,如果新增的方法是由default,则原有的实现类就不需要修改了。

示例

修改前

public interface Interface1 {
    void method1();
}
public class InterfaceImpl1 implements Interface1 {
    @Override
    public void method1() {
        System.out.println("InterfaceImpl1---method1");
    }
}
public class Client {
    public static void main(String[] args) {
        Interface1 s = new InterfaceImpl1();
        s.method1();
    }
}

运行结果

InterfaceImpl1---method1

在Interface1中default修饰的新增方法2

public interface Interface1 {
    void method1();

    default void method2() {
       System.out.println("Interface1---method2");
    }
}

运行Client,结果表明,实现类InterfaceImpl1不需要进行修改。即在已有的接口中添加default修饰的方法,不影响已有的实现类。

InterfaceImpl1---method1

新增实现类InterfaceImpl2

public class InterfaceImpl2 implements Interface1{
    @Override
    public void method1() {
        System.out.println("InterfaceImpl2---method1");

    }

    @Override
    public void method2() {
        System.out.println("InterfaceImpl2---method2");
    }
}

对Client进行修改

public class Client {
    public static void main(String[] args) {
        Interface1 s2 = new InterfaceImpl2();
        s2.method1();
        s2.method2();
    }
}

运行结果

InterfaceImpl2---method1
InterfaceImpl2---method2

新增类

public class Class1 {
    public void method2() {
        System.out.println("Class1---method1");
    }
}

修改实现类2

public class InterfaceImpl2 extends Class1 implements Interface1 {
    @Override
    public void method1() {
        System.out.println("InterfaceImpl2---method1");
    }
}

运行Client

public class Client {
    public static void main(String[] args) {
        Interface1 s2 = new InterfaceImpl2();
        s2.method2();
    }
}

结果说明 类的继承优先于由于接口的实现。

Class1---method2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值