在Java中多态理解起来挺费劲的,通过例子来说明可以帮助更好的理解。以下代码通过售卖汽车的例子讲解。
//汽车接口
interface Car{
//要求 接口中有:汽车名称和售价
String getName();
int getPrice();
}
首先发明家发明了汽车,现在宝马公司生产他们自己的汽车,实现这个接口
class BMW implements Car{
@Override
public String getName() {
// TODO Auto-generated method stub
//return null;
return "宝马";
}
@Override
public int getPrice() {
// TODO Auto-generated method stub
//return 0;
return 300000;
}
}
奇瑞QQ觉得好赚也自己来生产汽车,也实现了这个接口
//奇瑞QQ
class CheryQQ implements Car{
@Override
public String getName() {
// TODO Auto-generated method stub
return "奇瑞QQ";
}
@Override
public int getPrice() {
// TODO Auto-generated method stub
return 40000;
}
}
现在有一家汽车代理店,打算卖这两个类型的车,它必须兼顾所有可能的车型,所以卖的应该是统一为汽车。代码如下:
//汽车出售店
class CarShop{
//收入
private int money=0;
//卖出一部汽车
public void sellCar(Car car){
System.out.println("车型: "+car.getName()+"价格:"+car.getPrice());
money+=car.getPrice();
}
//售车总收入
public int getMoney(){
return money;
}
}
我们可以看到sellCar这个方法传入的是car这个对象。这个时候多态就派上用场了,代码如下:
public class jieKouDemo {
public static void main(String[]args){
CarShop shop=new CarShop();
//接口实现多态
Car carBmw = new BMW();
Car carChery = new CheryQQ()
//卖出一辆宝马
shop.sellCar(carBmw);
//卖出一辆奇瑞QQ
shop.sellCar(carChery);
System.out.println("总收入:"+shop.getMoney());
}
}
输出结果:
车型: 宝马价格:300000
车型: 奇瑞QQ价格:40000
总收入:340000