I came across a lot of code in our company codebase with the following structure
class Base
{
public Base (var a, var b)
{
base_a = a;
base_b = b;
}
var base_a;
var base_b;
}
class Derived:Base
{
publc Derived (var a,b,c,d): base (a,d)
{
der_c = c;
der_d = d;
}
var der_c;
var der_d;
var der_e;
}
class Ref
{
Base _ref;
public Ref( var a,b,c,d)
{
_ref = new Derived (a,b,c,d)
}
public void method( )
{
_ref.der_e = 444; // won't compile
}
}
der_e を初期化する正しい方法は何ですか? 基底クラスの参照を持ち、 _ref にオブジェクト派生クラスを使用する利点は何ですか? 基本クラス参照を使用すると、複数の派生クラス オブジェクトを保持できるという事実だけでしょうか。その場合、派生クラスのすべてのメンバー変数は、構築自体中に初期化する必要があります (次のように: _ref = new Derived (a,b,c,d) )。メソッドで後で _ref.der_e を初期化したい場合はどうすればよいですか? 私はこれを行うことができることを知っています (var cast_ref = _ref as Derived; cast_ref.der_e = 444) が、この外観はベスト プラクティスではないようです。そのような構造を持つという考えは何ですか?また、構築された後に派生クラス オブジェクトのメンバーを初期化することの正しいのは何ですか?