写一个Book类,数据有书名、价格、数量,函数有一个构造函数(形参是书名、价格和数量)和一个无参的构造函数(把数量和价格设置为0,把书名设置为“无名”),再有一个sale函数(形参是数量,显示卖的钱数,同时减少书的数量,如果数量不够卖的时候输出一个错误信息),还有一个show函数来显示书名、价格和数量。为了保证无参方式创建的对象也能使用,再写一个set函数(形参是书名、价格和数量)。在main函数中用用它。
时间: 2023-05-24 13:01:52 浏览: 59
以下是符合要求的代码:
```lua
-- 定义 Book 类
local Book = {}
function Book:new(name, price, quantity)
local obj = {}
setmetatable(obj, self)
self.__index = self
obj.name = name or "无名"
obj.price = price or 0
obj.quantity = quantity or 0
return obj
end
function Book:sale(num)
if self.quantity >= num then
local total = num * self.price
self.quantity = self.quantity - num
print("卖出 " .. num .. " 本书,得到 " .. total .. " 元")
else
print("库存不足,无法卖出")
end
end
function Book:show()
print("书名:" .. self.name)
print("价格:" .. self.price)
print("数量:" .. self.quantity)
end
function Book:set(name, price, quantity)
self.name = name or self.name
self.price = price or self.price
self.quantity = quantity or self.quantity
end
-- 使用 Book 类
local book1 = Book:new("Java入门", 50, 100)
book1:show() -- 输出:书名:Java入门 价格:50 数量:100
book1:sale(20) -- 输出:卖出 20 本书,得到 1000 元
book1:show() -- 输出:书名:Java入门 价格:50 数量:80
local book2 = Book:new()
book2:show() -- 输出:书名:无名 价格:0 数量:0
book2:set("C++入门", 40, 50)
book2:show() -- 输出:书名:C++入门 价格:40 数量:50
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)