始める無料で始める

調理機能のオーバーライド

子クラスは、メソッドをオーバーライドして機能を拡張できます。親クラスと同じ名前のメソッドを定義することで実現します。

子クラスからは、super$ を先頭に付けることで親クラスの public メソッドにアクセスできます。

この演習はコースの一部です

R における S3 と R6 を使ったオブジェクト指向プログラミング

コースを見る

演習の手順

電子レンジはワークスペースにあらかじめ用意されています。

  • 高機能電子レンジクラスの定義を更新し、public 要素を含めてください。
  • cook() メソッドをオーバーライドします。
    • cook メソッドは引き続き time_seconds 引数を受け取ります。
    • 親クラスの cook() メソッドに time_seconds 引数を渡し、…
    • その後、"Enjoy your dinner!" と表示する追加の message()docs)を出力します。
  • 高機能電子レンジのオブジェクトを生成し、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
___
コードを編集して実行