Menu
CoddyTech

圆形类

本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 57 课,共 70 课。

challenge icon

挑战

简单

让我们继续构建形状管理器,在上一课创建的 Rectangle 旁边添加一个 Circle 类。

你将使用 4 个文件来整理这些形状:

  • Shape.lua:基类 Shape,包含 :new(name) 和 :getName()。
  • Rectangle.lua:上一道挑战中的 Rectangle 类,包含 :getArea()。
  • Circle.lua:创建一个继承自 Shape 的 Circle 类。构造函数应接收一个 radius,使用名称 "Circle" 调用父类构造函数,并保存半径。添加一个 :getArea() 方法,使用公式 πr² 计算圆的面积。使用 math.pi 表示 π 的值。
  • main.lua:引入 Rectangle 和 Circle 模块。从输入中读取 3 个值:矩形的宽度、矩形的高度和圆的半径。分别创建这两种形状的一个实例,并打印 4 行:矩形的名称、矩形的面积、圆的名称和圆的面积。

现在,这两种形状通过继承共享相同的接口:它们都从 Shape 继承了 :getName() 方法,并各自实现了 :getArea()。这个通用接口在接下来的课程中会很有用。

输入:3 行:宽度(数字)、高度(数字)和半径(数字)。

输出:4 行:矩形的名称、矩形的面积、圆的名称和圆的面积。

亲手试试

-- 加载 Rectangle 模块
local Rectangle = require('Rectangle')

-- 加载 Circle 模块
-- TODO:在这里加载 Circle 模块

-- 从输入中读取宽度和高度
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO:从输入中读取半径

-- 用给定的尺寸创建一个新的 Rectangle 实例
local rect = Rectangle:new(width, height)

-- TODO:用给定的半径创建一个新的 Circle 实例

-- 输出矩形的名称和面积
print(rect:getName())
print(rect:getArea())

-- TODO:输出圆形的名称和面积

面向对象编程中的所有课

自己练习: Lua 在线编译器