【发布时间】:2012-06-18 09:13:05
【问题描述】:
我有一个父类和一个子类。 父级有一个初始化其参数的构造函数。
我的问题是:孩子如何看待父母的构造函数?我可以为孩子定义一个构造函数吗?
【问题讨论】:
标签: c# inheritance constructor parent
我有一个父类和一个子类。 父级有一个初始化其参数的构造函数。
我的问题是:孩子如何看待父母的构造函数?我可以为孩子定义一个构造函数吗?
【问题讨论】:
标签: c# inheritance constructor parent
您可以在 child 类的 ctor 中使用 base(...)。
前言:
public class Child : BaseClass
{
public Child() : base(/*some parameters*/) //CALLING BaseClass parametrized ctor
{
}
}
请注意,如果你不需要一些特定的参数,就不要做任何事情,因为BaseClass默认ctor会被调用顺便说一句当您调用 Child 类的 ctor 时。
【讨论】:
此继承示例显示:
代码示例:
public class Parent
{
private object _member;
public Parent(object member)
{
this._member = member;
}
}
public class Child : Parent
{
public Child(object member)
: base(member)
{
}
}
【讨论】:
public Child() : base(null)
您必须为孩子定义构造函数。您可以在构造函数原型及其实现之间使用: base() 调用基类的构造函数:
public class Parent {
public Parent() {
...
}
}
public class Child : Parent {
public Child() : base() { // calls Parent.ctor
}
}
【讨论】:
当然。
您在“base”关键字之后。
public class Fruit
{
string TypeOfFruit { get; set; }
public Fruit (string typeOfFruit)
{
TypeOfFruit = typeOfFruit;
}
}
public class Apple : Fruit
{
string AppleType { get; set; }
public Apple(string appleType) : base("Apple")
{
AppleType = appleType;
}
}
【讨论】:
你可以很好地为子类定义一个构造函数,只有在你没有为一个类定义构造函数的情况下才会提供默认的构造函数
同时说明如何查找parent的构造函数
它会检查父类中是否存在无参数构造函数,以防万一你没有(编译器会让你知道相同的),否则你将不得不使用像@这样的参数调用父构造函数987654321@
如果您还有其他意思,请更新问题。
【讨论】: