-1

好的,所以这个问题已经解决了,但是所有的解决方案实际上只适用于简单的程序,我希望找到一种更有效的方法来做到这一点。所以让我们假设我有这个代码

public class Parent
{
    int one;
    int two;
    public Parent(int A, int B)
    {
        one = A;
        two = B;
    }
}
public class Child : Parent
{
    int three;
    int four;
    public Child(int C, int D)
    {
        three = C;
        four = D;
    }
}

好的,因此 Child 具有所有父变量以及所有新变量(它具有 int 1 和 2 以及 3 和 4)。当我创建一个子对象时

Child myChild = new Child(3,4);

我只能输入子构造函数中声明的两个值,我真的需要设置所有四个变量值(两个来自父级,两个来自子级)。我发现的唯一解决方案是

public class Child : Parent
{
    int three;
    int four;
    public Child(int A, int B, int C, int D) : base(A, B)
    {
        three = C;
        four = D;
    }
}

但是我正在处理数十个子类和大约 30 个父变量,因此上面的解决方案变得非常大,对父变量所做的任何更改都必须在每个子类中手动更改。有没有一种简单的方法可以将父构造函数标记到子构造函数或其他比上面提出的更有效的解决方案上?

4

2 回答 2

0

公开字段,删除构造函数,定义任意数量的成员,声明您的类,如:

public class Parent {
    public int one;
    public int two;
}

public class Child: Parent {
    public int three;
    public int four;
}

并像实例化它

var child=
    new Child {
        one=1,
        two=2,
        three=3,
        four=4
    };
于 2013-03-23T11:22:37.650 回答
0

如果你是

处理几十个子类和大约 30 个父变量

您的架构存在严重问题。我可以建议您阅读有关组合而不是继承的内容http://en.wikipedia.org/wiki/Composition_over_inheritance或更喜欢组合而不是继承?.

但是,如果您对此无能为力,我建议您将此Parent 变量分组到一个对象中,并将此对象传递给构造函数。

于 2013-03-23T11:27:46.007 回答