目录树:
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); } }