0Pricing
Java Academy · 课时

实现

将设计转化为可运行的代码:定义基类,实现具体图形,并从混合列表中打印结果。

实现 是 CoddyKit 上的免费 Java Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 3 节课。

计划回顾

我们会编写带有 area() 和 perimeter() 的基础 Shape,然后添加 Circle 和 Rectangle。名称要简短,计算要易读,并优先使用小型辅助方法来完成输出。

代码:基类与 Circle

基类定义接口,并提供一个小型 info() 辅助方法。Circle 实现计算逻辑和 toString(),以便生成清晰的输出。

public class Main {
  // Base class with a tiny print helper
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() {
      return String.format("area=%.2f, per=%.2f", area(), perimeter());
    }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) {
      // simple guard to avoid negative sizes for beginners
      radius = (r < 0) ? 0 : r;
    }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
    public String toString() { return "Circle " + info(); }
  }

  public static void main(String[] args) {
    Shape s = new Circle(2.5);
    System.out.println(s); // prints Circle area/perimeter
  }
}

构造方法与保护措施

构造方法负责设置字段。为方便初学者理解,我们会通过将负数输入限制为零来防止 negative 输入。实际应用会使用验证或异常,但这里保持简单。

代码:添加 Rectangle

Rectangle 加入继承层次结构,并使用相同的接口。请注意,因为基类定义了契约,所以两个形状都可以用相同的代码打印。

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = (r < 0) ? 0 : r; }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
    public String toString() { return "Circle " + info(); }
  }
  static class Rectangle extends Shape {
    double w, h;
    Rectangle(double w, double h) {
      this.w = (w < 0) ? 0 : w;
      this.h = (h < 0) ? 0 : h;
    }
    double area() { return w * h; }
    double perimeter() { return 2 * (w + h); }
    public String toString() { return "Rectangle " + info(); }
  }

  public static void main(String[] args) {
    Shape a = new Circle(3.0);
    Shape b = new Rectangle(4.0, 2.0);
    System.out.println(a);
    System.out.println(b);
  }
}

列表与输出

Shape 列表让我们可以混合 Circle 和 Rectangle。简单的循环就能打印每个项目。对于移动设备上的输出,每行显示一个形状,并将数字格式化为小数点后两位。

代码:小型报告

报告:一个小型循环会打印每个形状的类型和摘要。多态让循环保持整洁,同时每个形状负责自己的计算。

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String label() { return getClass().getSimpleName(); }
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = (r < 0) ? 0 : r; }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
  }
  static class Rectangle extends Shape {
    double w, h;
    Rectangle(double w, double h) { this.w = (w < 0) ? 0 : w; this.h = (h < 0) ? 0 : h; }
    double area() { return w * h; }
    double perimeter() { return 2 * (w + h); }
  }

  public static void main(String[] args) {
    Shape[] shapes = { new Circle(1.2), new Rectangle(2.0, 3.0), new Circle(0.5) };
    for (int i = 0; i < shapes.length; i = i + 1) {
      Shape s = shapes[i];
      System.out.println(s.label() + " -> " + s.info());
    }
  }
}

实现检查

快速检查:在这个继承层次结构中,每个具体形状都必须实现什么?

回顾

回顾:我们编写了 Shape、Circle 和 Rectangle,添加了简单的保护措施,并从混合列表中打印了一份小型报告。下一课将学习多态行为,例如按 area 排序。

常见问题解答

「实现」课时是免费的吗?

是的 — 「实现」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 3 节课。

「实现」这节课中我会学到什么?

将设计转化为可运行的代码:定义基类,实现具体图形,并从混合列表中打印结果。 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「实现」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 设计
  2. 实现
  3. 多态行为
← 返回 Java Academy