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

来源:互联网 发布:厦门广电网络 编辑:程序博客网 时间:2024/04/30 11:00

实例说明

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

 

实现过程

新建一个抽象类,名称为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的多态主要是通过重写父类(或接口)中的方法来实现的。对于香蕉、橘子等水果而言,人们通常关心其能吃的特性。如果分别说香蕉能吃、橘子能吃,则当再增加新的水果种类,如菠萝时还要写个菠萝能吃,这是非常麻烦的。使用多态的话可以写成水果能吃,当需要用到具体的水果时,系统会自动帮忙替换,从而简化开发。

 

 

0 0