Java8 接口interface默认方法

在 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();
    } 
}

参考文献

  • https://blog.csdn.net/u010003835/article/details/76850242?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4.control

  • https://blog.csdn.net/qq_25933249/article/details/90065221?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

  • https://www.jianshu.com/p/5b800057f2d8

你可能感兴趣的:(Java8 接口interface默认方法)