開始使用免費開始

再次覆寫烹調功能

一旦中介類別透過 super_ 活動繫結(active binding)曝露了其父類別的功能,你就能跨越多個世代的 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 清單元素。
  • 覆寫 public 的 cook() 方法。
    • 該方法只接受一個名為 time_seconds 的引數。
    • 它應該先呼叫 MicrowaveOvencook() 方法,……
    • 然後用 message(ascii_pizza_slice)文件)顯示一片披薩。
  • 具現化一個高階微波爐物件並指定給 a_high_end_microwave
  • 呼叫 a_high_end_microwavecook() 方法,烹調 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
___
編輯並執行程式碼