你见过接口类型数组做形参吗?为啥用接口类型做形参,有啥好处?且随我往下看
示例
package interfaceArray;
public interface Pet {
/**
* 动物跑步
*/
public void run();
/**
* 动物吃饭
*/
public void eat();
}
package interfaceArray;
public class Bird implements Pet{
public void run() {
System.out.println("鸟跑步");
}
public void eat() {
System.out.println("鸟吃饭");
}
}
package interfaceArray;
public class BaiLingBird extends Bird {
public void eat(){
System.out.println("百灵鸟吃饭");
}
}
package interfaceArray;
public class Test {
Bird bird1 = new Bird();
Bird bird2 = new Bird();
Bird[] birds = {
bird1,bird2};
BaiLingBird baiLingBird1 = new BaiLingBird();
BaiLingBird baiLingBird2 = new BaiLingBird();
BaiLingBird baiLingBird3 = new BaiLingBird();
BaiLingBird[] baiLingBirds = {
baiLingBird1,baiLingBird2,baiLingBird3};
public static void main(String[] args) {
Test test = new Test();
//birds不是静态的,所以调用需要实例化
System.out.println(test.lengt(test.birds));
System.out.println(test.lengt(test.baiLingBirds));
}
//用接口数组作为形参,只要是继承过这个接口的参数都可以传递进来
public int lengt(Pet[] pet){
return pet.length;
}
}
优点
接口类型数组作为形参,那么只需要继承过此接口的数组就可以作为实参,而且传入的参数可以调用接口的方法。
同理常见的也有父类做形参,或许你也可以试试接口做形参
相关设计模式
策略模式吗?学艺不精,还请诸位补充