day10-接口interface-默认方法的使用
This commit is contained in:
@@ -29,4 +29,7 @@ public interface MyInterface {
|
|||||||
|
|
||||||
public abstract void method();//抽象方法可以设置为私有吗???不行,必须只能是public
|
public abstract void method();//抽象方法可以设置为私有吗???不行,必须只能是public
|
||||||
void method1();//前面会自动加上public abstract
|
void method1();//前面会自动加上public abstract
|
||||||
|
|
||||||
|
|
||||||
|
void method2();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,4 +11,9 @@ public class MyInterfaceImpl implements MyInterface{
|
|||||||
public void method1() {
|
public void method1() {
|
||||||
System.out.println("实现类MyInterfaceImpl实现重写了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