轨道
/
Java
Java
/
练习
/
耶德利克的玩具车
耶德利克的玩具车

耶德利克的玩具车

学习练习

简介

类

Java 中最主要的面向对象构造是_类_,它是数据(字段)与行为(方法)的组合。 类的字段和方法称为它的_成员_。

对成员的访问可以通过访问修饰符来控制,最常见的两种是:

  • public:任何代码都可以访问该成员(没有限制)。
  • private:只有同一个类中的代码可以访问该成员。

可以把类看作创建该类实例的模板。 要创建类的实例(也称为_对象_),需要使用 new 关键字:

class Car {
}

// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();

字段有类型和名称(用 camelCase 定义),可以在类中的任何位置定义(按惯例用 PascalCase 命名):

class Car {
    // Accessible by anyone
    public int weight;

    // Only accessible by code in this class
    private String color;
}

可以选择给字段赋一个初始值。 如果字段_没有_指定初始值,它会被设为该类型的默认值。 可以使用点表示法访问和更新实例的字段值。

class Car {
    // Will be set to specified value
    public int weight = 2500;

    // Will be set to default value (0)
    public int year;
}

Car newCar = new Car();
newCar.weight; // => 2500
newCar.year;   // => 0

// Update value of the field
newCar.year = 2018;

私有字段通常作为调用方法时的副作用被更新。 这类方法通常不返回任何值,此时返回类型应为 void:

class CarImporter {
    private int carsImported;

    public void importCars(int numberOfCars)
    {
        // Update private field from public method
        carsImported = carsImported + numberOfCars;
    }
}

说明

在这个练习中,你将操作一辆遥控车,你终于攒够了钱把它买下来了。

遥控车出厂时电池是满的(100%)。每次使用遥控器驾驶这辆车,它会行驶 20 米,并消耗百分之一的电量。

这辆遥控车有一个炫酷的 LED 显示屏,可以显示两项信息:

  • 总行驶距离,显示为:"Driven <METERS> meters"。
  • 剩余电量,显示为:"Battery at <PERCENTAGE>%"。

如果电池电量为 0%,你就不能再驾驶这辆车了,电池显示屏会显示 "Battery empty"。

你有六个任务,每个任务都会操作遥控车实例。

1. 购买一辆全新的遥控车

实现(static)JedliksToyCar.buy()方法,返回一个全新的遥控车实例:

JedliksToyCar car = JedliksToyCar.buy();

2. 显示已行驶的距离

实现JedliksToyCar.distanceDisplay()方法,返回 LED 显示屏上显示的距离:

JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"

3. 显示电池电量百分比

实现JedliksToyCar.batteryDisplay()方法,返回 LED 显示屏上显示的电池电量百分比:

JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"

4. 驾驶时更新行驶的米数

实现JedliksToyCar.drive()方法,更新行驶的米数:

JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"

5. 驾驶时更新电池电量百分比

更新JedliksToyCar.drive()方法,以更新电池电量百分比:

JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"

6. 电池耗尽时阻止驾驶

更新JedliksToyCar.drive()方法,使其在电池耗尽(电量为 0%)时,既不增加行驶距离,也不减少电池电量百分比:

JedliksToyCar car = JedliksToyCar.buy();

// Drain the battery
// ...

car.distanceDisplay();
// => "Driven 2000 meters"

car.batteryDisplay();
// => "Battery empty"
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Java Exercism

准备好开始 耶德利克的玩具车 了吗?

注册 Exercism,借助 26 个概念158 个练习 和真人导师指导,学习并掌握 Java,全部免费。