java8新特性学习——接口添加default方法

default方法
java8在接口中引入了默认方法,通过在方法前加上default关键字就可以在接口中写方法的默认实现

同一接口可以定义多个default方法

public interface FatherInterface {
    default void methods(){
        System.out.println("interface B methods");
    }

    default void methods1(){
        System.out.println("interface methods1");
    }

}

当多个接口或父类中有相同签名的方法时,会引发一些问题:
1.继承一个父类,实现一个接口

public class FatherClass {
    public void methods(){
        System.out.println("Object A methods");
    }
}

public interface FatherInterface {
    default void methods(){
        System.out.println("interface B methods");
    }
}

public class SonClass extends FatherClass implements FatherInterface{
    public static void main(String[] args) {
        SonClass sonClass = new SonClass();
        sonClass.methods();
    }
}

结果:Object A methods
结论:当继承的父类和实现的接口中有相同签名的方法时,优先使用父类的方法。

2.实现两个接口

public interface FatherInterface {
    default void methods(){
        System.out.println("interface B methods");
    }
}
public interface MotherInterface {
    default void methods(){
        System.out.println("interface C methods");
    }
}
public class SonClass implements FatherInterface , MotherInterface{
    public static void main(String[] args) {
        SonClass sonClass = new SonClass();
        sonClass.methods();
    }
}

java8新特性学习——接口添加default方法_第1张图片
显示错误,提示方法名重复
解决方式:通过 覆写指定接口的方法

public class SonClass implements FatherInterface , MotherInterface{
    public static void main(String[] args) {
        SonClass sonClass = new SonClass();
        sonClass.methods();
    }

    @Override
    public void methods(){
        FatherInterface.super.methods();
    }
}

你可能感兴趣的:(java)