day10-接口interface-默认方法的使用
This commit is contained in:
@@ -29,4 +29,7 @@ public interface MyInterface {
|
||||
|
||||
public abstract void method();//抽象方法可以设置为私有吗???不行,必须只能是public
|
||||
void method1();//前面会自动加上public abstract
|
||||
|
||||
|
||||
void method2();
|
||||
}
|
||||
|
||||
@@ -11,4 +11,9 @@ public class MyInterfaceImpl implements MyInterface{
|
||||
public void method1() {
|
||||
System.out.println("实现类MyInterfaceImpl实现重写了method1方法");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method2() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.inmind.interface_abstract01;
|
||||
|
||||
public class MyInterfaceImpl1 implements MyInterface{
|
||||
@Override
|
||||
public void method() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method1() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method2() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.inmind.interface_abstract01;
|
||||
|
||||
public class MyInterfaceImpl2 implements MyInterface{
|
||||
@Override
|
||||
public void method() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method1() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method2() {
|
||||
|
||||
}
|
||||
}
|
||||
26
day10/src/com/inmind/interface_default02/Demo02.java
Normal file
26
day10/src/com/inmind/interface_default02/Demo02.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package com.inmind.interface_default02;
|
||||
/*
|
||||
接口是可以进行接口升级,添加功能,之前添加功能方法只能添加抽象方法,导致所有的实现类都必须要修改,这样非常麻烦
|
||||
为了解决该问题,在jdk8中添加了默认方法来解决。
|
||||
|
||||
默认方法的定义方法:
|
||||
public default void method1(){
|
||||
|
||||
};
|
||||
------------------------------------------------------
|
||||
接口中默认方法的使用步骤:
|
||||
1.接口是不能创建对象的
|
||||
2.必须使用一个类实现该接口
|
||||
3.创建实现类的对象才能调用接口中的默认方法
|
||||
4.在接口的实现类中,可以根据对应的需求,可以选择重写或不重写接口中的默认方法
|
||||
(MyInterfaceDefault.super.method3();!!!!沿用父类功能)
|
||||
|
||||
*/
|
||||
public class Demo02 {
|
||||
public static void main(String[] args) {
|
||||
MyInterfaceDefaultImpl1 impl1 = new MyInterfaceDefaultImpl1();
|
||||
impl1.method3();
|
||||
MyInterfaceDefaultImpl2 impl2 = new MyInterfaceDefaultImpl2();
|
||||
impl2.method3();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.inmind.interface_default02;
|
||||
|
||||
public interface MyInterfaceDefault {
|
||||
public abstract void method1();
|
||||
void method2();
|
||||
|
||||
public default void method3(){
|
||||
System.out.println("这是MyInterfaceDefault接口升级的method3的默认功能");
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.inmind.interface_default02;
|
||||
|
||||
public class MyInterfaceDefaultImpl1 implements MyInterfaceDefault{
|
||||
@Override
|
||||
public void method1() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method2() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.inmind.interface_default02;
|
||||
|
||||
public class MyInterfaceDefaultImpl2 implements MyInterfaceDefault{
|
||||
@Override
|
||||
public void method1() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method2() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method3(){
|
||||
//沿用接口的默认功能
|
||||
MyInterfaceDefault.super.method3();
|
||||
//扩展一些新的功能
|
||||
System.out.println("MyInterfaceDefaultImpl2不满意默认功能,重写实现了method3的新的功能");
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user