zoukankan      html  css  js  c++  java
  • java 1、抽象类-抽象方法应用-汽车租赁项目(含枚举类型应用)2、接口模拟计算机USB接口操作

    目录树:

    Vehicle:

      -Vehicle.java //汽车抽象类

      -Car.java 

      -Bus.java

      -CarType.java  //小汽车枚举类型

      VehicleTest.java

    // Vehicle.java
    
    package Vehicle;
    
    public abstract class Vehicle {//用abstract 修饰的类叫做抽象类
        //用abstract 修饰的方法叫做抽象方法,没有方法体
        public abstract double getRent(int days);
    }
    //CarType.java 
    
    package Vehicle;
    /**
     * @author: Zhangmingda
     * @description:自定义车型:两箱、三箱,SUV、MPV 等,
     *  可以看做是一组常量的组合,类似一年只有四个季度
     * date: ${DATE}.
     */
    public enum  CarType {
        HATCHBACK,THREECOMPARTMENT, SUV, MPV
        //分别代表两箱,三箱,SUV,MPV(商务车)
    }

    //Car.java

    //Car.java
    
    package Vehicle;
    
    public class Car extends Vehicle{
        CarType type; //使用枚举类型避免出错
    
        //重写父类的抽象方法
        @Override
        public double getRent(int days) {
            switch (type){
                case HATCHBACK://IDEA智能识别自定义的枚举可选类型
                    return 200 * days;
                case THREECOMPARTMENT:
                    return 300 *days;
                case SUV:
                    return 350 * days;
                case MPV:
                    return 150 * days;
                default:
                    return 800 * days;
            }
        }
    }
    //Bus.java
    
    package Vehicle;
    
    /**
     * @author: Zhangmingda
     * @description: XXX
     * date: 2019/12/3.
     */
    public class Bus extends Vehicle{
        //大巴车定义自己的座位数属性
        int seats;
        //重写父类的抽象方法父类要求返回double类型,子类则也要求返回double
        @Override
        public double getRent(int days) {
            if(seats > 0 && seats <= 18){
                return 400 * days;  //不同的座位数每日租金不同,返回计算结果不同
            }else if(seats > 18 && seats <= 25 ){
                return 1000 * days;
            }else if(seats > 25 && seats <= 51 ) {
                return 1500 * days;
            }else{
                return 2000 *days;
            }
    
        }
    }
    //VehicleTest.java
    
    
    package Vehicle;
    import java.util.Scanner;
    /**
     * @author: Zhangmingda
     * @description: 测试不同车的租金
     * date: 2019/12/3.
     */
    public class VehicleTest {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            //选中代码,快捷键Ctrl + Alt + T 用代码包裹
            while (true) {
                System.out.print("请输入要选择的种类:
    1 小汽车、2 Bus 7座以上汽车 3 退出:");
                int chose = sc.nextInt();
                if(chose == 1){
                    Car car = new Car();
                    System.out.print("请选择汽车车型:1、两箱 2、三箱 3、SUV 4、PMV(商务)");
                    chose = sc.nextInt();
                    //根据选择计算租金
                    switch (chose){
                        case 1:
                            car.type = CarType.HATCHBACK;break;
                        case 2:
                            car.type = CarType.THREECOMPARTMENT;break;
                        case 3:
                            car.type = CarType.SUV;break;
                        case 4:
                            car.type = CarType.MPV;break;
                        default:
                            System.out.println("输入有误!以三箱做计算");
                            car.type = CarType.THREECOMPARTMENT;
                            break;
                    }
                    //车型信息确定。开始计算租金。这里定义一个单独的方法来计算,和计算bus车型共用
                    calculate(car);
                }else if(chose == 2) {
                    //确定选择bus的作为数
                    Bus bus = new Bus();
                    System.out.print("请选择作为数:1、18座 2、 19-25座 3、26-51座: " );
                    chose = sc.nextInt();
                    bus.seats = chose;
                    //车型信息确定。开始计算租金。这里定义一个单独的方法来计算,和计算bus车型共用
                    calculate(bus);
                }else {
                    //return;
                    System.exit(0);//退出JVM虚拟机
                }
            }
    
        }
    
        private static void calculate(Vehicle vehicle) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入要租用的天数:");
            int days = scanner.nextInt();
            System.out.println("您的租金为:" + vehicle.getRent(days) );
    
        }
    }
    //模拟计算机USB接口应用
    //目录usb
    // Computer.java 计算机类
    // Disk.java 磁盘类实现USB接口
    // Printer.java 打印机类 实现USB接口
    // Usb.java 接口规范
    // 接口
    package usb;
    
    /**
     * @author: Zhangmingda
     * @description: 定义一个接口,供任何USB设备相互对接
     * date: 2019/12/3.
     */
    public interface Usb {
        void connect();
        void disconnect();
    }
    
    
    package usb;
    
    /**
     * @author: Zhangmingda
     * @description: XXX
     * date: 2019/12/3.
     */
    public class Printer implements Usb {
        @Override
        public void connect() {
            System.out.println("打印机已连接。");
        }
    
        @Override
        public void disconnect() {
            System.out.println("打印机已断开连接,可以拔出了!");
        }
    }
    package usb;
    
    /**
     * @author: Zhangmingda
     * @description: XXX
     * date: 2019/12/3.
     */
    public class Disk implements Usb {
        @Override
        public void connect() {
            System.out.println("硬盘已连接。");
        }
    
        @Override
        public void disconnect() {
            System.out.println("硬盘已断开连接,可以拔出了!");
        }
    }
    package usb;
    
    /**
     * @author: Zhangmingda
     * @description: 定义计算机可以插入USB设备、移除USB设备功能
     * date: 2019/12/3.
     */
    public class Computer {
          Usb slot; //定义Usb 插槽,类变量
        //把USB设备插入USB卡槽,需要通过参数接收一个USB设备,实现了一个USB接口就行
        public void insert( Usb device){
            slot = device;//通过赋值模拟设备插在USB口中
            slot.connect();//插上就自动连接
        }
        public void pullout(Usb device){
            if(this.slot == null){
                System.out.println("USB口没有设备");
                return;
            }
            device.disconnect();
            this.slot = null;
            System.out.println("设备已拔出");
        }
    }
    package usb;
    
    /**
     * @author: Zhangmingda
     * @description: 测试计算机插拔 实现接口的设备
     * date: 2019/12/3.
     */
    public class ComputerTest {
        public static void main(String[] args) {
            //建立一个计算机对象、磁盘、打印机
            Computer computer = new Computer();
            Disk disk = new Disk();
            Printer printer = new Printer();
            //模拟插入拔出操作
            computer.insert(disk);
            computer.pullout(disk);
            computer.insert(printer);
            computer.pullout(printer);
            computer.pullout(printer);
    
        }
    }
     
  • 相关阅读:
    go语言时间格式化----go语言学习笔记(二)
    go语言模拟post请求----go语言学习笔记(一)
    beego框架配置mysql
    django---request在url中传值请求其他服务的get请求,获取请求头
    nginx+uwsgi+ubuntu 部署django
    集成jenkins自动安装apk文件
    python数据可视化之flask+echarts(二)
    httpd 2.2 实验小结
    CentOS 6安装详解及PXE 安装
    有关安全知识点及实验小结
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/11977057.html
Copyright © 2011-2022 走看看