默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能提供抽象方法
A 这个接口,增加了一个默认方法 b,这个方法有实现体,并且被声明为了default
public interface A {
public void a();
default public void b() {
System.out.println("默认方法");
}
}
假设没有默认方法这种机制,那么如果要为A增加一个新的方法b,那么所有实现了A接口的类,都需要做改动。
但是引入了默认方法后,原来的类,不需要做任何改动,并且还能得到这个默认方法
通过这种手段,就能够很好的扩展新的类,并且做到不影响原来的类
练习
为A接口增加一个默认方法 f()
为B接口也增加一个默认方法f()
问: AB同时实现了A,B接口,那么AB 对象调用f()的时候,是调用哪个接口的f()?
答:
作为同时继承了A和B中的 默认方法f,就必须在实现类中重写该方法
从而免去到底调用哪个接口的f方法这个模棱两可的问题
public class AB implements A,B{
//作为同时继承了A和B中的 默认方法f,就必须在实现类中重写该方法
//从而免去到底调用哪个接口的f方法这个模棱两可的问题
@Override
public void f() {
//
System.out.println("这个AB自己的f方法");
}
}