day10-接口的默认方法的定义和使用
This commit is contained in:
22
day10/src/com/inmind/interface_default02/Demo02.java
Normal file
22
day10/src/com/inmind/interface_default02/Demo02.java
Normal file
@@ -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();
|
||||
}
|
||||
}
|
||||
24
day10/src/com/inmind/interface_default02/MyInterface.java
Normal file
24
day10/src/com/inmind/interface_default02/MyInterface.java
Normal file
@@ -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");
|
||||
};//新增的功能规范
|
||||
}
|
||||
@@ -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()");
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user