JAVA种用一个类去调用一个接口的多个实现类
我建了Carinterface这个接口,包含2个属性(name,price),我又建了3个这个接口的实现类(Car1,Car2,Car3),现在。我建了Car这个类,用来...
我建了Carinterface这个接口,包含2个属性(name,price),我又建了3个这个接口的实现类(Car1,Car2,Car3),现在。我建了Car这个类,用来输出3个实现类的属性值;部分代码如下:
//接口代码
public interface Carinterface {
public String getName();
public int getPrice();
}
//Car1代码(Car2、Car3和Car1代码相同,但是值不同,这里不写了)
public class Car1 implements Carinterface {
String name = "A6";
int price = 123456;
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
现在,我要让Car这个类来输出3个实现类的输出值我要怎么写Car的代码?如果接口的实现类有很多怎么办,有什么方法能够遍历这个接口的所有实现类,输出所有的返回值。
如果这个接口的实现类有100个或更多呢?难道一定要一个一个添加吗。那用接口不是更麻烦吗? 展开
//接口代码
public interface Carinterface {
public String getName();
public int getPrice();
}
//Car1代码(Car2、Car3和Car1代码相同,但是值不同,这里不写了)
public class Car1 implements Carinterface {
String name = "A6";
int price = 123456;
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
现在,我要让Car这个类来输出3个实现类的输出值我要怎么写Car的代码?如果接口的实现类有很多怎么办,有什么方法能够遍历这个接口的所有实现类,输出所有的返回值。
如果这个接口的实现类有100个或更多呢?难道一定要一个一个添加吗。那用接口不是更麻烦吗? 展开
展开全部
如果接口的实现类有很多,那么你可以像下面这样,把所有实现类的类名在一个地方定义。可以是一个property文件, 可以是数据库,也可以直接写在代码里。也可以用工厂模式,也可以用代理,spring等等,方法很多,就不一一列举了。。。
public class Car {
public static void main(String[] args) throws Exception{
List<String> classList = new ArrayList<String>();
classList.add("Car1");
classList.add("Car2");
for(String className : classList) {
Carinterface car = (Carinterface) Class.forName(className).newInstance();
System.out.println(car.getName() + " : " + car.getPrice());
}
}
}
public class Car {
public static void main(String[] args) throws Exception{
List<String> classList = new ArrayList<String>();
classList.add("Car1");
classList.add("Car2");
for(String className : classList) {
Carinterface car = (Carinterface) Class.forName(className).newInstance();
System.out.println(car.getName() + " : " + car.getPrice());
}
}
}
展开全部
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实现方法。
{
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实现方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询