java接口可以多继承
方便升级,接口添加新方法时default修饰,已实现的子类不会报错。
https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html#:~:text=Default%20methods%20enable%20you%20to%20add%20new%20functionality%20to%20existing,as%20parameters%20to%20existing%20interfaces.
StaticClass sc = null;
sc.staticMethod(); // 编译通过
StaticInterface si = null;
si.staticMethod(); // 编译不通过:因为类可以多实现,不同接口中可能方法名冲突,出现调用不确定性,所以编译不通过
由于存在代码体的默认方法、静态方法的出现,private不再变得无意义。为了提高单个接口中多个方法间代码的复用性,可将公共代码抽取到私有方法中。
实现类实现多个接口,且不同接口中存在名字和参数相同的抽象方法,实现类只需实现一次即可;但若不同接口中存在名字和参数相同的public default方法,则编译不通过,除非实现类重写了冲突的方法。若父类和接口类中方法冲突,则使用父类中的方法。
接口不允许有静态代码块、构造方法、构造代码块
Fu obj = new Zi();
System.out.print(obj.num); // 输出父类的属性