Java8 接口interface默认方法
2020-12-08 本文已影响0人
HachiLin
在 java 8 之前,接口与其实现类之间的 耦合度 太高了(tightly coupled),当需要为一个接口添加方法时,所有的实现类都必须随之修改。默认方法解决了这个问题,它可以为接口添加新的方法,而不会破坏已有的接口的实现。接口默认方法有两种:
1. 非静态默认方法
- 定义
package com.test
public interface DefaultTest {
default void print() {
System.out.println("我是非静态方法!");
}
}
- 使用
package com.test
public class DefaultTestImpl implements DefaultTest {
@Override
public void print() {
DefaultTest.super.print(); // 继承父亲的内容
System.out.println("我是非静态方法儿子!");
}
public static void main(String[] args) {
new DefaultTestImpl().print();
}
}
2. 静态默认方法
- 定义
package com.test
public interface StaticTest {
static void print() {
System.out.println("我是静态方法!");
}
}
-
使用1
静态方法不能重写,只能使用。
package com.test
public class StaticTestImpl implements StaticTest {
public static void main(String[] args) {
StaticTest.print();
}
}
-
使用2
不在同一包下。
package com.another
import com.test.StaticTest;
public class StaticTestUser{
public static void main(String[] args) {
StaticTest.print();
}
}