一、需求我们要编写一个Tank坦克类实现坦克的核心功能记录坦克的速度double 类型和炮弹数量int 类型实现加速、减速速度不能为负功能实现设置炮弹数量、获取炮弹数量、获取速度功能实现开火功能有炮弹才能发射发射后炮弹数量减 1编写测试类Fight创建两个坦克对象测试所有功能。二、核心知识点类与对象类是对象的模板比如Tank是坦克模板对象是类的实例比如tank1、tank2是具体的坦克成员变量定义在类中、方法外的变量用来描述对象的属性速度、炮弹数量就是坦克的属性成员方法定义在类中的方法用来描述对象的行为加速、减速、开火就是坦克的行为方法调用通过「对象名。方法名 ()」调用对象的方法实现对象的行为。三、完整代码实现1. Tank 类坦克模板这个类定义了坦克的所有属性和行为替换模板中的【代码】即可public class Tank { // 【代码 1】声明 double 型变量 speed刻画速度 double speed; // 【代码 2】声明 int 型变量 bulletAmount刻画炮弹数量 int bulletAmount; // 加速方法参数s为增加的速度值 void speedUp(int s) { // 【代码 3】将 sspeed 赋值给 speed speed s speed; } // 减速方法参数d为减少的速度值速度不能小于0 void speedDown(int d) { if(speed - d 0) // 【代码 4】将 speed-d 赋值给 speed speed speed - d; else speed 0; // 速度最低为0 } // 设置炮弹数量 void setBulletAmount(int m) { bulletAmount m; } // 获取炮弹数量 int getBulletAmount() { return bulletAmount; } // 获取当前速度 double getSpeed() { return speed; } // 开火方法有炮弹才能发射 void fire() { if(bulletAmount 1){ // 【代码 5】将 bulletAmount-1 赋值给 bulletAmount bulletAmount bulletAmount - 1; System.out.println(打出一发炮弹); } else { System.out.println(没有炮弹了无法开火); } } }2. Fight 类测试类创建坦克对象调用方法测试坦克的所有功能public class Fight { public static void main(String args[]) { // 声明坦克对象引用 Tank tank1,tank2; // 创建具体的坦克对象实例化 tank1 new Tank(); tank2 new Tank(); // 为两个坦克设置初始炮弹数量 tank1.setBulletAmount(10); tank2.setBulletAmount(10); // 打印初始炮弹数量 System.out.println(tank1 的炮弹数量tank1.getBulletAmount()); System.out.println(tank2 的炮弹数量tank2.getBulletAmount()); // 坦克加速 tank1.speedUp(80); tank2.speedUp(90); // 打印加速后的速度 System.out.println(tank1 目前的速度tank1.getSpeed()); System.out.println(tank2 目前的速度tank2.getSpeed()); // 坦克减速 tank1.speedDown(15); tank2.speedDown(30); // 打印减速后的速度 System.out.println(tank1 目前的速度tank1.getSpeed()); System.out.println(tank2 目前的速度tank1.getSpeed()); // 坦克开火测试 System.out.println(tank1 开火); tank1.fire(); System.out.println(tank2 开火); tank2.fire(); tank2.fire(); // tank2连续开火两次 // 打印开火后的炮弹数量 System.out.println(tank1 的炮弹数量tank1.getBulletAmount()); System.out.println(tank2 的炮弹数量tank2.getBulletAmount()); } }四、代码关键解析【代码 1、2】成员变量声明直接在类中定义变量不需要写static属于对象的属性每个坦克对象都有独立的速度和炮弹数量。double speed; // 速度 int bulletAmount; // 炮弹数量【代码 3】加速逻辑速度 原有速度 增加的速度直接赋值即可speed s speed;【代码 4】减速逻辑先判断减速后速度是否≥0满足条件就更新速度speed speed - d;【代码 5】开火逻辑每开一次火炮弹数量减 1确保有炮弹才能发射bulletAmount bulletAmount - 1;五、运行结果运行Fight类的main方法控制台输出如下tank1 的炮弹数量10 tank2 的炮弹数量10 tank1 目前的速度80.0 tank2 目前的速度90.0 tank1 目前的速度65.0 tank2 目前的速度65.0 tank1 开火 打出一发炮弹 tank2 开火 打出一发炮弹 打出一发炮弹 tank1 的炮弹数量9 tank2 的炮弹数量8六、实验总结通过这个 Tank 坦克实验我们掌握了 Java 面向对象最核心的基础类是模板对象是实例Tank定义了坦克的通用属性和行为tank1/tank2是具体的坦克成员变量描述属性speed、bulletAmount记录坦克的状态成员方法描述行为加速、减速、开火都是坦克的功能通过方法实现对象独立两个坦克对象的速度、炮弹数量互不影响这就是面向对象的「封装性」