假设我有这些类(class):
Class A {};
Class B : A {} ;
以及一个返回A
的函数:
public A read_an_A();
由于 B
是 A
的子级,我希望能够从以下意义上读取它的 A
属性:
B b = new B ( read_an_A() );
(假设使用默认复制构造函数)
或者可能是这样的:
B b = (B) read_an_A ();
以上所有内容显然都被破坏了,实现这一目标的正确方法是什么?
最佳答案
一种方法是添加 B 的构造函数,该构造函数接受 A,并从中获取相关部分:
public B(A a) {
this.x = a.x;
this.y = a.y;
}
您的 B 级人员最清楚该采取什么措施,因此这种方法也相当干净。它可以让你写
B b = new B(read_an_A());
就像您在问题中建议的那样。当然,B 很可能也需要其他构造函数。
关于c# - 使用父对象创建子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210159/