专业制作网站多少钱/上海网站建设方案
Java8-接口新特性
default方法
在Java8之前,接口不允许存在除了静态方法之外的方法的,但是在java
8的时候允许default
修饰符的实现方法存在。
interface MyInterfaceOne {// 实现方法default String get() {return "ha ha ha ... ";}static void say() {System.out.println("MyInterfaceOne stastic say ha ha ha ... ");} }
类优先原则
在继承一个类的同时实现了另外一个接口的,而接口和该类中有相同的实现方法的时候,会以类的方法作为最优先的。
一个接口
interface MyInterfaceTwo {default String get() {return "he he he ... ";}static void say() {System.out.println("MyInterfaceTwo stastic say he he he ... ");} }
一个父类
class MyClass {public String get() {return "he he he ... ";}public static void say() {System.out.println("MyClass stastic say he he he ... ");} }
子类
class SubClass extends MyClass implements MyInterfaceTwo {
}
测试
public static void main(String[] args) {SubClass s = new SubClass();System.out.println(s.get());//he he he ... SubClass.say();//MyClass stastic say he he he ...
}
发现子类SubClass
的默认方法是继承MyClass
的,包括静态方法say()
。
多接口的显示实现
如果一个子类实现了多个接口,而这些接口中存在同样名字和参数列表的方法的话,需要显示指明是哪个方法。
class SubClass implements MyInterfaceOne,MyInterfaceTwo {@Overridepublic String get() {return MyInterfaceOne.super.get(); // 显示指明实现的 MyInterfaceOne 的方法}}