接口默认方法
java(jdk8)之前
- 接口里面只能定义静态变量和抽象方法,方法不能有方法体;
接口是可以继承接口的
Java(jdk8)后
- 在接口中新增了default(默认)方法和static(静态)方法,这两种方法可以有方法体
- 还可以定义普通成员变量
结论1:接口中的static方法不能被继承,也不能被实现类调用,只能被自身调用
结论2:default方法可以被子接口继承亦可被其实现类所调用
结论3:父接口default方法被继承时,可以被子接口覆写
结论4:如果一个类实现了多个接口,且这些接口中无继承关系,这些接口中若有相同的(同名,同参数)的default方法,
public class interfacrjava8texing {
public static void main(String[] args) {
test t1=new test();
t1.eat();
System.out.println(Inter1.a);
System.out.println(t1.a);
System.out.println(t1.sub(2, 3));
Inter2.eat1();
t1.eat();
}
}
interface Inter1{
int a=9;
default void eat() {
System.out.println("default爱吃榴莲");
}
int sub(int a,int b);
}
interface Inter2 extends Inter1{
static void eat1() {
System.out.println("static爱吃臭豆腐");
}
}
class test implements Inter1,Inter2{
@Override
public void eat() {
System.out.println("inter1default爱吃榴莲");
}
@Override
public int sub(int a, int b) {
return a+b;
}
}