/** * 车辆实体类 - 用于车辆管理系统 * 包含车辆的基本信息,实现完整的封装 */ public class Car { // 私有属性,实现封装 private String brand; // 品牌 private String model; // 型号 private int year; // 生产年份 private double price; // 价格 private String color; // 颜色 private String licensePlate; // 车牌号 /** * 无参构造方法 */ public Car() { this.brand = "未知品牌"; this.model = "未知型号"; this.year = 2026; this.price = 0.0; this.color = "未知颜色"; this.licensePlate = "未上牌"; } /** * 全参构造方法 - 创建车辆对象时必须提供所有信息 * @param brand 品牌 * @param model 型号 * @param year 生产年份 * @param price 价格 * @param color 颜色 * @param licensePlate 车牌号 */ public Car(String brand, String model, int year, double price, String color, String licensePlate) { this.brand = brand; this.model = model; setYear(year); // 使用 setter 方法进行数据校验 setPrice(price); // 使用 setter 方法进行数据校验 this.color = color; this.licensePlate = licensePlate; } /** * 简化版构造方法 - 只需提供品牌、型号和价格 * @param brand 品牌 * @param model 型号 * @param price 价格 */ public Car(String brand, String model, double price) { this(brand, model, 2026, price, "标准色", "待上牌"); // 调用全参构造方法 } // Getter 和 Setter 方法(封装的体现) public String getBrand() { return brand; } public void setBrand(String brand) { if (brand != null && !brand.trim().isEmpty()) { this.brand = brand; } else { System.out.println("错误:品牌名称不能为空!"); } } public String getModel() { return model; } public void setModel(String model) { if (model != null && !model.trim().isEmpty()) { this.model = model; } else { System.out.println("错误:型号名称不能为空!"); } } public int getYear() { return year; } /** * 设置生产年份(带数据校验) * @param year 生产年份 */ public void setYear(int year) { if (year >= 1900 && year <= 2026) { this.year = year; } else { System.out.println("错误:年份必须在 1900-2026 之间!"); this.year = 2026; // 使用默认值 } } public double getPrice() { return price; } /** * 设置价格(带数据校验) * @param price 价格 */ public void setPrice(double price) { if (price > 0) { this.price = price; } else { System.out.println("错误:价格必须大于 0!"); this.price = 0.0; // 使用默认值 } } public String getColor() { return color; } public void setColor(String color) { if (color != null && !color.trim().isEmpty()) { this.color = color; } else { System.out.println("错误:颜色不能为空!"); } } public String getLicensePlate() { return licensePlate; } public void setLicensePlate(String licensePlate) { if (licensePlate != null && !licensePlate.trim().isEmpty()) { this.licensePlate = licensePlate; } else { System.out.println("错误:车牌号不能为空!"); } } /** * 显示车辆信息 */ public void showInfo() { System.out.println("\n========== 车辆信息 =========="); System.out.println("品牌:" + brand); System.out.println("型号:" + model); System.out.println("年份:" + year); System.out.println("价格:" + price + "万元"); System.out.println("颜色:" + color); System.out.println("车牌号:" + licensePlate); System.out.println("=============================\n"); } /** * 测试本类的功能 * @param args 命令行参数(可选:第一个参数为起始测试编号) */ static void main(String[] args) { System.out.println("╔══════════════════════════════╗"); System.out.println("║ 车辆管理系统 - Car 类测试 ║"); System.out.println("╚══════════════════════════════╝\n"); // 如果通过命令行传入参数,可以控制测试流程 int startTest = 1; // 默认从测试 1 开始 if (args.length > 0) { try { startTest = Integer.parseInt(args[0]); System.out.println("提示:从测试 " + startTest + " 开始执行\n"); } catch (NumberFormatException e) { System.out.println("提示:使用默认测试流程\n"); } } // 测试 1:使用无参构造方法 if (startTest <= 1) { System.out.println("【测试 1】使用无参构造方法:"); Car car1 = new Car(); car1.showInfo(); } // 测试 2:使用简化版构造方法 if (startTest <= 2) { System.out.println("【测试 2】使用简化版构造方法:"); Car car2 = new Car("丰田", "卡罗拉", 15.8); car2.showInfo(); } // 测试 3:使用全参构造方法 if (startTest <= 3) { System.out.println("【测试 3】使用全参构造方法:"); Car car3 = new Car("宝马", "530Li", 2024, 45.6, "黑色", "京 A88888"); car3.showInfo(); } // 测试 4:使用 this 调用其他构造方法 + 测试 getter 方法 if (startTest <= 4) { System.out.println("【测试 4】修改车辆信息并验证:"); Car car2 = new Car("丰田", "卡罗拉", 15.8); car2.setBrand("Toyota"); car2.setModel("Corolla"); car2.setYear(2025); car2.setPrice(16.5); car2.setColor("白色"); car2.setLicensePlate("沪 C12345"); // 使用 getter 方法验证修改结果 System.out.println("验证修改结果:"); System.out.println("品牌:" + car2.getBrand()); System.out.println("型号:" + car2.getModel()); System.out.println("年份:" + car2.getYear()); System.out.println("价格:" + car2.getPrice() + "万元"); System.out.println("颜色:" + car2.getColor()); System.out.println("车牌号:" + car2.getLicensePlate()); car2.showInfo(); } // 测试 5:数据校验测试 if (startTest <= 5) { System.out.println("【测试 5】数据校验测试:"); Car car3 = new Car("宝马", "530Li", 2024, 45.6, "黑色", "京 A88888"); car3.setYear(1800); // 无效年份,会触发校验 car3.setPrice(-10); // 无效价格,会触发校验 car3.setBrand(""); // 空品牌,会触发校验 car3.showInfo(); } // 测试 6:单独测试 getter 方法 if (startTest <= 6) { System.out.println("【测试 6】测试 getter 方法:"); Car car1 = new Car(); System.out.println("car1 品牌:" + car1.getBrand()); System.out.println("car1 型号:" + car1.getModel()); System.out.println("car1 年份:" + car1.getYear()); System.out.println("car1 价格:" + car1.getPrice()); System.out.println("car1 颜色:" + car1.getColor()); System.out.println("car1 车牌号:" + car1.getLicensePlate()); } System.out.println("\n✓ 所有测试完成!"); } }