java8新特性:接口中的默认方法和静态方法

接口默认方法“类优先原则”

若一个接口中定义了一个默认方法,另一个的父类或接口中又定义一个同名方法时:

  • 选择父类方法。如果一个父类提供了具体实现,那么,接口中具有同名称的方法和参数将会被忽略。
    示例:
    父类
public class MyClass {
	public String getName(){
		return "嘿嘿嘿";
	}
}

接口

public interface MyFun {
	
	default String getName(){
		return "哈哈哈";
	}

}

子类


public class SubClass extends MyClass implements MyFun{
}

运行结果:
在这里插入图片描述
接口冲突:如果一个父接口提供一个默认方法,而另一个接口也提供一个具有相同名称和参数列表的方法(不管这个方法是否是默认方法),那么必须覆盖该方法来解决冲突

示例:
第二个接口:

public interface MyInterface {
	
	default String getName(){
		return "呵呵呵";
	}
}

子类:

public class SubClass implements MyFun, MyInterface{

	@Override
	public String getName() {
		return MyInterface.super.getName();
	}
}

这里实现类父接口MyInterface的方法,所以结果如下
在这里插入图片描述

java8中接口中允许添加静态方法

例如

public interface MyInterface {
	public static void show(){
		System.out.println("接口中的静态方法");
	}
}
posted @ 2019-05-03 12:42  drl_blogs  阅读(236)  评论(0编辑  收藏  举报