Java8 default关键字介绍
Posted 顧棟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于Java8 default关键字介绍的主要内容,如果未能解决你的问题,请参考以下文章