私は比較的新しいルビーです。オブジェクトを初期化すると自動的にその親クラスが初期化される可能性はありますか?スーパークラスのメソッドを初期化するためにスーパークラスを手動で呼び出すことはできますが、スーパークラスを明示的に呼び出さなければ自動的にこれが行われるのでしょうか?Keepinig Ruby OOP DRY
Javaでは発生します。 Javaオブジェクトを初期化すると、その親クラスのオブジェクトは自動的に初期化され、その親クラスのコンストラクタが自動的に呼び出されます。
これがルビでは発生しない場合、新しい親クラスオブジェクトが子クラスとともに自動的に作成(初期化)されないことを意味しますか?
これが当てはまる場合、私の問題を解決する最も良いOOPの方法は何ですか?
クラスBは、Aの子です。AにはXresultという属性があります。 Bの初期化はオブジェクトXに渡され、Bの初期化に渡されたオブジェクトXを使用してXresultをAに設定する必要があります。
1つの方法は、XからXresultを取得して属性を設定できるところで、XをAの初期化に渡すことです。しかし、これを行うには、Bの初期化でスーパー(X)を行う必要があります。これは乾燥しません。私にはBのような子供がたくさんいます。
Xresultをメソッドにすることはできますか?スーパーの属性にアクセスするのではなく、メソッドを呼び出すことができます。 –
しかし、私はすべてのBでこのメソッドを反復的に呼び出す必要があります。 – Rpant
"新しい親クラスオブジェクトが自動的に作成されないということですか?" "親オブジェクト"はありません。それはすべて同じオブジェクトです。 –