重写烹饪功能
子类也可以通过重写方法来扩展功能。做法是在子类中定义与父类同名的方法。
子类可以通过在方法名前加上 super$ 来访问父类的公共方法。
本练习是课程的一部分
R 中的 S3 与 R6 面向对象编程
练习说明
您的工作空间中已预定义一个微波炉对象。
- 更新高级微波炉类的定义,加入一个 public 元素。
- 重写
cook()方法。cook方法仍需接收time_seconds参数。- 它应将
time_seconds参数传递给父类的cook()方法,…… - 然后再显示一个额外的
message()(文档),内容为"Enjoy your dinner!"。
- 实例化一个高级微波炉对象,并将其赋值给
a_fancy_microwave。 - 调用
cook()方法,时间为 1 秒。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Explore microwave oven class
microwave_oven_factory
# Update the class definition
fancy_microwave_oven_factory <- R6Class(
"FancyMicrowaveOven",
inherit = microwave_oven_factory,
# Add a public list with a cook method
___ = ___(
___ = ___
)
)
# Instantiate a fancy microwave
a_fancy_microwave <- ___
# Call the cook() method
___