調理機能のオーバーライド
子クラスは、メソッドをオーバーライドして機能を拡張できます。親クラスと同じ名前のメソッドを定義することで実現します。
子クラスからは、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
___