Java经典编程300例之实例062 简单的汽车销售商场(多态)

实例说明

当顾客在商场购物时,卖家需要根据顾客的需求提取商品。对于汽车销售商场也是如此。用户需要先指定购买的车型,然后商家去提取该车型的汽车。本实例将实现一个简单的汽车销售商场,用来演示多态的用法。

 

实现过程

新建一个抽象类,名称为Car,在该类中定义一个抽象方法getInfo()

Car.java

public abstract class Car {
    public abstract String getInfo();
}

再创建一个名称为BMW的类,该类继承自Car并实现其getInfo()方法。

BMW.java

public class BMW extends Car {
    @Override
    public String getInfo() {
        return "BMW";
    }
}

再创建一个名称为Benz的类,该类继承自Car并实现其getInfo()方法。

Benz.java

public class Benz extends Car {
    @Override
    public String getInfo() {
        return "Benz";
    }
}

再创建一个名称为CarFactory的类,该类定义了一个静态方法getCar(),它可以根据用户指定的车型来创建对象。

CarFactory.java

public class CarFactory {
    public static Car getCar(String name) {
        if (name.equalsIgnoreCase("BMW")) {           //如果需要BMW则创建BMW对象
            return new BMW();
        } else if (name.equalsIgnoreCase("Benz")) {   //如果需要Benz则创建Benz对象
            return new Benz();
        } else {                                      //暂时不能支持其他车型
            return null;
        }
    }
}

再创建一个名称为Customer的类,用来进行测试。在main()方法中,根据用户的需要提取不同的汽车。

Customer.java

public class Customer {
    public static void main(String[] args) {
        System.out.println("顾客要购买BMW");
        Car bmw = CarFactory.getCar("BMW");                 //用户要购买BMW
        System.out.println("提取汽车:" + bmw.getInfo());   //提取BMW
        System.out.println("顾客要购买Benz");
        Car benz = CarFactory.getCar("Benz");               //用户要购买Benz
        System.out.println("提取汽车:" + benz.getInfo());  //提取Benz
    }
}

编译运行

$ javac Car.java BMW.java Benz.java CarFactory.java Customer.java
$ java Customer
顾客要购买BMW
提取汽车:BMW
顾客要购买Benz
提取汽车:Benz 

 

技术要点

本实例应用的主要技术就是面向对象程序设计中的多态。多态是面向对象程序设计的基本特性之一。使用多态的好处就是可以屏蔽对象之间的差异,从而增强了软件的扩展性和重用性。Java的多态主要是通过重写父类(或接口)中的方法来实现的。对于香蕉、橘子等水果而言,人们通常关心其能吃的特性。如果分别说香蕉能吃、橘子能吃,则当再增加新的水果种类,如菠萝时还要写个菠萝能吃,这是非常麻烦的。使用多态的话可以写成水果能吃,当需要用到具体的水果时,系统会自动帮忙替换,从而简化开发。

 

 


版权声明:本文为HanTangSongMing原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。