我正在使用C#,但我认为这是一个非常普遍的面向对象问题。假设我有一个名为Animal的类,它具有属性如LegCount、EyeCount、HasFur、EatsMeat等。
假设我有一个Animal实例a,其中LegCount设置为4,EyeCount设置为2。
现在,我想创建一个类型为Dog的实例d,它继承自Animal。我想用a的所有值来初始化d。我意识到我可以创建一个构造函数或其他方法,该方法将采用Animal并复制所有值,然后输出一个新的Dog,但我希望有一些面向对象的原则/技巧可以帮助我。
简单来说,我想做的是:
创建Dog的新实例d,其所有起始值都来自a。关键是“全部”,而不是逐个指定每个属性。
当您设计一个继承自其他类的类时,您不需要列出它继承的所有成员。它只是继承了它们所有。因此,我想知道是否可以在实际实例上“继承值”。
假设我有一个Animal实例a,其中LegCount设置为4,EyeCount设置为2。
现在,我想创建一个类型为Dog的实例d,它继承自Animal。我想用a的所有值来初始化d。我意识到我可以创建一个构造函数或其他方法,该方法将采用Animal并复制所有值,然后输出一个新的Dog,但我希望有一些面向对象的原则/技巧可以帮助我。
简单来说,我想做的是:
创建Dog的新实例d,其所有起始值都来自a。关键是“全部”,而不是逐个指定每个属性。
当您设计一个继承自其他类的类时,您不需要列出它继承的所有成员。它只是继承了它们所有。因此,我想知道是否可以在实际实例上“继承值”。
Dog(Animal a)
的构造函数,而不是Dog(int LegCount,int EyeCount,...)
。您仍然可能需要自己执行一对一的赋值,但从面向对象的角度来看,这就是“诀窍”,据我所知。 - asfallowsio
可以在某种程度上做到这一点。你实际上可以从一个实例中派生子类。http://iolanguage.com/(我知道这对C#没有帮助,但是io很有趣) - asfallows