接口
1,接口中方法自动为public,变量自动为public static final
2,实现接口的类会自动继承接口的变量跟方法
3,接口中的方法——空方法+静态方法+默认方法(default声明的方法)
2,实现接口的类会自动继承接口的变量跟方法
3,接口中的方法——空方法+静态方法+默认方法(default声明的方法)
1,接口中的静态方法——不会被实现接口的类继承,但可以通过接口名调用
2,接口中的默认方法——可以被实现接口的类继承
2,接口中的默认方法——可以被实现接口的类继承
默认方法冲突——父类有方法print( ),多个接口有默认方法print( )
1,父类优先
public class Son extends Father implements i1,i2{};
Son son=new Son( );
son.print()——调用父类的print
2,接口冲突
public class Son implements i1,i2{}——不会通过编译,要解决二义性(重写方法)
1,父类优先
public class Son extends Father implements i1,i2{};
Son son=new Son( );
son.print()——调用父类的print
2,接口冲突
public class Son implements i1,i2{}——不会通过编译,要解决二义性(重写方法)
两种解决方案——Ⅰ直接重写
Ⅱ子类方法中用 接口名.super.方法 来调用接口的默认方法
public void print( ){
i1.super().print( );
}
Ⅱ子类方法中用 接口名.super.方法 来调用接口的默认方法
public void print( ){
i1.super().print( );
}