接口里的方法可以写也可以不写
如果写的话,那么得是默认方法,需要在前面加个default
对于默认方法,能够重写,或者直接继承(也就是直接用)
比如下面:
就直接调用了接口的默认函数nibuhao,
如果重写的话,就是这样:
当然,有一种情况一定得重写,就是
一个类有可能使用相同的默认方法实现两个接口
public interface vehicle {
default void print() {
System.out.println("I am a vehicle!");
}
}
public interface fourWheeler {
default void print() {
System.out.println("I am a four wheeler!");
}
}
第一个解决方案是创建一个自己的方法来覆盖默认实现。
public class car implements vehicle, fourWheeler {
public void print() {
System.out.println("I am a four wheeler car vehicle!");
}
}
第二种方案是使用 super 调用指定接口的默认方法。
public class car implements vehicle, fourWheeler {
public void print() {
vehicle.super.print();
}
}
转载自
另外的就是直接实现,像上图的nihao就是在实现类中实现。
另外,实现类也可以继承接口里已经写的方法,直接用。
其次,接口可以继承多个接口
比如接口A继承接口B和接口C
那么实现接口A的类就可以用B和C的方法
而且经过实验,发现 实现类A实现接口B,类C继承实现类A,
那么类C将拥有A的方法和B的默认实现方法。
当然,如果类A重写了B的默认方法,那么C继承的就是重写的方法。
还有一种很牛逼的做法,在实现类A中,实现接口B的方法,然后在实现的方法中用到B的默认函数!