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)但这种外观似乎不是最佳实践。拥有这样一个结构的想法是什么?在构造派生类对象的成员之后初始化它的正确性是什么?