diff --git a/day10/src/com/inmind/interface_default02/Demo02.java b/day10/src/com/inmind/interface_default02/Demo02.java new file mode 100644 index 0000000..21e0a6a --- /dev/null +++ b/day10/src/com/inmind/interface_default02/Demo02.java @@ -0,0 +1,22 @@ +package com.inmind.interface_default02; +/* +JDK8时提供,接口的默认方法 + +接口的默认方法的使用步骤: +1.接口不能创建对象的,它没有构造方法 +2.定义一个实现类,实现该接口,并实现接口中的所有的抽象方法 + public class MyInterfaceImpl(实现类) implements MyInterface(接口){ +3.创建该接口的实现类的对象,调用接口的默认方法 +4.在接口的实现类中,可以根据对应的需求,选择性重写,或不重写接口中的默认方法,也可以沿用功能(接口.super.默认方法名)(重点) + */ +public class Demo02 { + public static void main(String[] args) { + //实现类1 + MyInterfaceImpl impl = new MyInterfaceImpl(); + impl.method2(); + + //实现类2 + MyInterfaceImpl1 impl1 = new MyInterfaceImpl1(); + impl1.method2(); + } +} diff --git a/day10/src/com/inmind/interface_default02/MyInterface.java b/day10/src/com/inmind/interface_default02/MyInterface.java new file mode 100644 index 0000000..17ea807 --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterface.java @@ -0,0 +1,24 @@ +package com.inmind.interface_default02; +/* + 第一个版本的规则,有一个固定功能method + 第二个版本中,需要增加功能method2 + + 接口是可以升级的,添加新功能,之前添加功能只能通过抽象方法,导致所有的实现类都报错,这样非常麻烦。 + 为了解决该问题,jdk8提供了默认方法来解决 + + 接口中的默认方法的定义格式: + public default 返回值类型 方法名(参数列表){ + 默认实现 + } + + */ +public interface MyInterface { + public abstract void method(); + + void method1(); + + //默认方法 + public default void method2(){ + System.out.println("接口中的默认方法method2"); + };//新增的功能规范 +} diff --git a/day10/src/com/inmind/interface_default02/MyInterfaceImpl.java b/day10/src/com/inmind/interface_default02/MyInterfaceImpl.java new file mode 100644 index 0000000..e9edd6e --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterfaceImpl.java @@ -0,0 +1,14 @@ +package com.inmind.interface_default02; + +//实现类,实现MyInterface接口 +public class MyInterfaceImpl implements MyInterface { + @Override + public void method() { + System.out.println("实现类MyInterfaceImpl重写抽象方法method()"); + } + + @Override + public void method1() { + System.out.println("实现类MyInterfaceImpl重写抽象方法method1()"); + } +} diff --git a/day10/src/com/inmind/interface_default02/MyInterfaceImpl1.java b/day10/src/com/inmind/interface_default02/MyInterfaceImpl1.java new file mode 100644 index 0000000..6534bd9 --- /dev/null +++ b/day10/src/com/inmind/interface_default02/MyInterfaceImpl1.java @@ -0,0 +1,20 @@ +package com.inmind.interface_default02; + +//实现类,实现MyInterface接口 +public class MyInterfaceImpl1 implements MyInterface { + @Override + public void method() { + System.out.println("实现类MyInterfaceImpl重写抽象方法method()"); + } + + @Override + public void method1() { + System.out.println("实现类MyInterfaceImpl重写抽象方法method1()"); + } + + @Override + public void method2() {//实现类覆盖了接口中的默认功能 + //MyInterface.super.method2();//沿用接口中的功能 + System.out.println("实现类MyInterfaceImpl1,完全重写了接口MyInterface中的默认方法method2"); + } +}