接口的默认方法(1)
1、接口的方法都是没有实现的公开的
2、java8推出的默认方法/静态方法(都带实现的),为Lambda表达式提供支持
接口的默认方法
1、以default关键字标注,其他的定义和普通函数一样
2、默认方法不能重写Object中的方法
3、实现类可以继承/重写父类接口的默认方法
4、接口可以继承/重写父类接口的默认方法
5、当父类和父类接口都有默认方法,子类继承父类的默认方法,这样可以兼容JDK7以前的代码
6、子类实现了2个接口(均有同名同参数的默认方法),那么编译失败,必须在子类中重写default方法
接口的静态方法
static标注
静态方法属于本接口的,不属于子类/子接口,不可传给后代的类/ 接口
子类/子接口没有基础该静态方法,只能通过所在的接口名来调用
默认方法可以调用非静态/静态私有方法
静态方法只能调用静态私有方法
所有私有方法只能在当前接口内使用
接口和抽象类
都是抽象的,都不能实例化,即不能被new
都可以有实现方法
都可以不需要继承者实现所有的方法
抽象类只能继承一个,接口乐园实现多个
接口的变量默认是public static final,且必须有初值,子类不能修改,而抽象类的变量默认是default,子类可以继承修改
接口没有构造函数,抽象类有构造函数
接口没有main函数,抽象类可以有main函数
接口有public/default/private 的方法,抽象类有public/private/protected 不写关键字的方法