再度重写烹饪功能
一旦中间类通过启用的 super_ 主动绑定暴露了其父类功能,您就可以跨越多代 R6 类访问方法。语法如下:
parent_method <- super$method()
grand_parent_method <- super$super_$method()
great_grand_parent_method <- super$super_$super_$method()
本练习是课程的一部分
R 中的 S3 与 R6 面向对象编程
练习说明
微波炉类和高级微波炉类已在您的工作空间中预定义。字符串 ascii_pizza_slice 也已预定义。
- 通过打印名称来探索其他微波炉工厂。
- 使用
R6Class()(文档)定义一个HighEndMicrowaveOven类生成器,并将其赋值给high_end_microwave_oven_factory。- 它应当继承自
FancyMicrowaveOven。 - 它应当包含一个
public列表元素。
- 它应当继承自
- 重写公共的
cook()方法。- 该方法只接受一个名为
time_seconds的参数。 - 它应当调用
MicrowaveOven的cook()方法,…… - 然后使用
message(ascii_pizza_slice)(文档)显示一片披萨。
- 该方法只接受一个名为
- 实例化一个高端微波炉对象,并将其赋值给
a_high_end_microwave。 - 调用
a_high_end_microwave的cook()方法,烹饪 1 秒。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Explore other microwaves
microwave_oven_factory
fancy_microwave_oven_factory
# Define a high-end microwave oven class
high_end_microwave_oven_factory <- ___(
"___",
___ = ___,
___ = ___(
___ = ___
)
)
# Instantiate a high-end microwave oven
a_high_end_microwave <- ___
# Use it to cook for one second
___