【发布时间】:2014-06-05 17:55:28
【问题描述】:
一个简化的场景。三个类,GrandParent,Parent 和 Child。我想做的是利用 GrandParent 和 Parent 构造函数来初始化一个 Child 实例。
class GrandParent ()
{
public int A {get; protected set;}
public int B {get; protected set;}
public GrandParent (int a, int b);
{
A = a;
B = b;
}
}
class Parent : GrandParent ()
{
public Parent () {}
}
Child Class,如果出现问题。
class Child : Parent ()
{
public int C {get; protected set}
public Child (int c) // here I want it to also call the GrandParent (int a, int b)
// before calling Child (int c)
{
C = c;
}
}
Child = new Child (1,2,3);
我想要的是变量 a、b 和 c 分别获得 1,2 3 作为值。我知道我可以通过简单地将A = a 和B = b 添加到Child 构造函数来解决它。
这可能吗?如果有怎么办?
我开始查看 base (),但它看起来只能访问 Parent 类而不是 GrandParent。
提前致谢。
附言。如果之前有人问过,我提前道歉,我没有找到任何东西。
快速编辑:我正在努力使解决方案尽可能易于使用,以便进一步开发。
【问题讨论】:
-
为了编译,
Parent不需要一个带两个参数的构造函数吗? -
这目前无法编译,我现在使用的是
A=a和B=b以及将其参数放入 Child 中。我的问题是没有可能吗? -
还有一个语法错误,因为类名后面不应该有括号
()。 -
这个故事的寓意是,在解释继承时,我们应该避免使用
Parent、Grandparent和Child作为示例名称。 child 不是 parent 的类型,parent 不是 grandparent 的类型。这些名称没有充分解释上位词/同音词关系,因此“可以在没有设置 A 或 B 的情况下创建的东西”不能是一种“只能用正在设置 A 或 B”。
标签: c# inheritance