Java8之前,接口里面的方法全部都是抽象方法,Java8(含有8)之后,以后允许在接口里面定义默认方法和静态方法了。
java8以上版本允许给接口加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做默认方法。
默认方法和抽象方法区别就是抽象方法必须要被实现,默认方法不是。作为替代方式,接口可以提供默认方法的实现,所以这个接口的实现类都可以得到默认方法。
默认方法
interface A {
default void moren() {
System.out.println("A.moren");
}
void fly();
}
class Test implements A {
@Override
public void moren() {
System.out.println("我是重写的方法");
}
public void fly() {
System.out.println("飞起来");
}
}
静态方法
Java8以后,我们也可以在接口中定义静态方法的实现,这个静态方法直接从属于接口(接口也是一种类,一种特殊的类),可以通过接口名字调用;
如果子类中定义了相同的方法,那就是完全不同的方法了,直接从属于子类,可以通过子类名直接调用。
interface A {
public static void fly() {
System.out.println("静态方法飞起来");
}
}
class Test implements A {
public static void fly() {
System.out.println("我是Test静态方法");
}
}
接口中的默认方法可以调用静态方法;
package testduotai;
interface A {
public static void fly() {
System.out.println("静态方法飞起来");
}
default void moren() {
fly();
};
}
public class Animal {
public static void main(String[] args) {
A.fly();
}
}