使用接口作为形参
当我们编写一个有参方法,形参就是使用时传入的参数类型。这个类型限制了传入的参数。
而有一种语法,可以将接口对象当做形参。
而我们知道,接口是不可以new对象的,所以这里的接口形参,实际上是规定一个大范围。
真正调用方法时应当传入一个接口的实现类作为方法的参数。
目前较新的JDK都已经可以允许接口、抽象类中存在各种访问权限等级的方法,包括私有。
并且这些方法,除了抽象方法,都可以有方法体存在。
首先我们要知道,在动态绑定(不懂的可以去看我另一篇介绍这个定义的文章)发生时,实际会执行子类中重写后的方法。
public class Test5 extends Father5 implements I5{
public void show() {
System.out.println("子类方法执行");
}
public static void main(String[] args) {
Test5 t1 = new Test5();
I5 t2 = new Test5();
Father5 t3 = new Test5();
t1.show(); //子类方法执行
t2.show(); //子类方法执行
t3.show(); //子类方法执行
}
}
interface I5 {
default void show(){
System.out.println("接口方法执行");
}
}
class Father5 {
public void show() {
System.out.println("父类方法执行");
}
}
但这仅仅是参数相同(无参也算相同)的情况下。
当我们把形参设成不同类型时,子类中的方法就不再是重写后的方法,所以会用声明类型中的方法来实现。
public class Test5 extends