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

 

 

Java经典编程源码程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 Eclipse开发工具 6 实例005 下载并运行Eclipse工具 7 实例006 为Eclipse安装中文包 8 实例007 使用Eclipse注释代码 10 实例008 使用Eclipse格式化代码 11 实例009 安装WindowBuilder插件 12 实例010 开发计算器界面 14 第3章 Java语言基础 15 实例011 输出错误信息与调试信息 16 实例012 从控制台接收输入字符 16 实例013 重定向输出流实现程序日志 17 实例014 自动类型转换与强制类型转换 19 实例015 加密可以这样简单(位运算) 20 实例016 用三元运算符判断奇数和偶数 21 实例017 不用乘法运算符实现2×16 22 实例018 实现两个变量的互换 (不借助第3个变量) 23 第4章 流程控制 25 实例019 判断某一年是否为闰年 26 实例020 验证登录信息的合法性 27 实例021 为新员工分配部门 28 实例022 用switch语句根据消费 金额计算折扣 29 实例023 判断用户输入月份的季节 31 实例024 使用while循环语句与自增 运算符循环遍历数组 33 实例025 使用for循环输出杨辉三角形 34 实例026 使用嵌套循环在控制台上 输出九九乘法表 35 实例027 使用while循环计算1+ 1/2!+1/3!…1/20! 36 实例028 使用for循环输出空心的菱形 38 实例029 终止循环体 39 实例030 循环体的过滤器 41 第5章 数组及其常用操作 43 实例031 获取一维数组的最小值 44 实例032 将二维数组中的行列互换 45 实例033 利用数组随机抽取幸运观众 47 实例034 用数组设置JTable表格的 列名与列宽 49 实例035 使用按钮控件数组实现 计算器界面 51 实例036 通过复选框控件数组实现 添加多个复选框控件 52 实例037 使用选择排序法对数组排序 53 实例038 使用冒泡排序法对数组排序 55 实例039 使用快速排序法对数组排序 57 实例040 使用直接插入法对数组排序 59 实例041 使用sort()方法对数组排序 61 实例042 反转数组中元素的顺序 63 第6章 面向对象入门 65 实例043 自定义图书类 66 实例044 温度单位转换工具 67 实例045 成员变量的默认初始化值 68 实例046 单模式的应用 69 实例047 汉诺塔问题求解 70 实例048 编写同名的方法 71 实例049 构造方法的应用 72 实例050 统计图书的销售量 73 实例051 两只完全相同的宠物 74 实例052 重新计算对象的哈希码 76 实例053 使用字符串输出对象 77 实例054 Java对象的假克隆 78 实例055 Java对象的浅克隆 80 实例056 Java对象的深克隆 82 实例057 序列化与对象克隆 84 实例058 深克隆效率的比较 87 第7章 面向对象进阶 89 实例059 经理与员工的差异 90 实例060 重写父类中的方法 92 实例061 计算几何图形的面积 93 实例062 简单汽车销售商场 95 实例063 使用Comparable接口自定 义排序 96 实例064 策略模式的简单应用 98 实例065 适配器模式的简单应用 100 实例066 普通内部类的简单应用 102 实例067 局部内部类的简单应用 103 实例068 匿名内部类的简单应用 104 实例069 静态内部类的简单应用 105 实例070 实例化Class类的几种方式 107 实例071 查看类的声明 108 实例072 查看类的成员 110 实例073 查看内部类信息 112 实例074 动态设置类的私有域 113 实例075 动态调用类中方法 115 实例076 动态实例化类 116 实例077 创建长度可变的数组 117 实例078 利用反射重写toString()方法 119 第8章 字符串与包装类 121 实例079 将数字格式化为货币字符串 122 实例080 货币金额大写格式 123 实例081 String类格式化当前日期 125 实例082 字符串大小写转换 1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值