- Java 8 之前,接口中的方法是不能有实现的,在 Java 8后接口中就可以有默认实现 使用关键字 default 可以声明有默认实现的方法。
interface Monk{
public default void practiceKongfu() {
System.out.pritln("如果暴力不是为了杀戮,那将毫无意义。");
}
}
这种默认实现,就可以代替缺省适配器。
- 缺省适配器: 一个类实现一个接口就必须去实现这个接口中的所有方法。往往有时候,一些类或者对象只想要实现其中的某些方法。这个时候我们通常编写一个适配器类来实现这个接口,在这个适配器类中通过写空方法的方式来实现接口,这样它的子类就可以只选择自己需要的方法来实现。
- Java 8 之后通常把一个接口里面只有一个方法且没有默认实现的接口称为函数接口,可以用Lambda表达式来实现
okButton.addActionListener(e -> {
changeBgColor();
});
就无需去创建匿名内部类来实现。但是当这个接口中存在多种方法,往往还是要使用适配器
this.add(MouseListenner(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
super.mouseClicked(e);
}
}))
- 接口之间可以相互继承,并且可以多继承,使用关键字extends