圆形类
本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 57 课,共 70 课。
挑战
简单让我们继续构建形状管理器,在上一课创建的 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 在线编译器