我们知道在接口里的方法都是不能实现的,interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。但是在1.8版本中却有不同。
在1.8中Interface可以实现方法,但是需要使用default或者static的关键字,使用default意思是,默认实现default方法,这样需要在接口添加方法时就不要再去实现这个方法,static意思就跟基本类中使用static方法一样,可以不用new直接使用,当然接口还是不能new。
package com.study.webapp.jdk8;
public class InterfaceTest {
public static void main(String[] args) {
// 可以直接使用接口中的静态方法
Test1.run2();
Test2.run2();Test test = new Test();
test.show();
test.run1();
}}
class Test implements Test1, Test2 {
@Override
public void show() {
Test2.super.run1();
}@Override
public void run1() {
// TODO Auto-generated method stub
Test1.super.run1();
}}
interface Test1 {
void show();default void run1() {
System.out.println("test1 run1 >>>>>>>>>>>");
}static void run2() {
System.out.println("test1 run2 >>>>>>>>>>>>");
}
}interface Test2 {
void show();default void run1() {
System.out.println("test2 run1 >>>>>>");
}static void run2() {
System.out.println("test2 run2 >>>>>");
}
}