JAVA种用一个类去调用一个接口的多个实现类

2024-11-27 12:49:33
推荐回答(2个)
回答1:

如果接口的实现类有很多,那么你可以像下面这样,把所有实现类的类名在一个地方定义。可以是一个property文件, 可以是数据库,也可以直接写在代码里。也可以用工厂模式,也可以用代理,spring等等,方法很多,就不一一列举了。。。
public class Car {
public static void main(String[] args) throws Exception{
List classList = new ArrayList();
classList.add("Car1");
classList.add("Car2");
for(String className : classList) {
Carinterface car = (Carinterface) Class.forName(className).newInstance();
System.out.println(car.getName() + " : " + car.getPrice());
}
}
}

回答2:

public class Car
{
Carinterface a,b,c;

void set(Car1 a,Car2 b,Car3 c,)
{
this.a=(Carinterface)a; //做类型转换,说是强转也可以
this.b=(Carinterface)b;
this.c=(Carinterface)c;
}

void getPrice()
{
System.out.println(a.getPrice()); //输出Car1类的实现
System.out.println(b.getPrice()); //输出Car2类的实现
System.out.println(c.getPrice()); //输出Car3类的实现
}
}

//因为a,b,c是Carinterface类型的。
但是传入的是Car1,Car2,Car3类型的,会被自动转换为Carinterface类型
通过接口函数调用的时候,虽然都是Carinterface类型
但是会自动调用到Car1,Car2,Car3类型的个子的 getPrice实现方法。