C# 如何将固定参数传递给基构造函数 什么
我有一个编码练习,其中基类构造函数应该能够使用输入参数定义自定义属性值,但派生类应该将该属性设置为固定值 练习文本的一个片段:C# 如何将固定参数传递给基构造函数 什么,c#,inheritance,C#,Inheritance,我有一个编码练习,其中基类构造函数应该能够使用输入参数定义自定义属性值,但派生类应该将该属性设置为固定值 练习文本的一个片段: “定义一个班级的经理…经理也有每月的奖金,这应该在施工时指定…” “定义一个类主管。主管类应该是从经理类派生出来的。主管只是一个每月固定奖金为20000美元的经理……在实施主管类时,要特别注意正确实施构造函数。该类是否除了构造器,你还需要别的吗?“ 问题: 那么,如何在派生类中仅通过在该类中具有构造函数来设置该固定值呢?另外:子类对象的创建者应该根本无法设置该属性(m
经理
…经理也有每月的奖金,这应该在施工时指定…”主管
。主管
类应该是从经理
类派生出来的。主管只是一个每月固定奖金为20000美元的经理……在实施主管
类时,要特别注意正确实施构造函数。该类是否除了构造器,你还需要别的吗?“monthlyBonus
)
企图
- 我曾考虑在构造函数中生成变量时删除
类中的输入参数Director
,但由于基类构造函数首先被调用,我想这是行不通的monthlyBonus
- 我还考虑将输入参数值设置为可选值,但是调用者可以更改此值,因此这也不被接受
public class Director : Manager
{
public Director(string name, int salaryPerMonth, int monthlyHours,)
:base(name, salaryPerMonth, monthlyHours, 20000)
{
}
}
简而言之,您只需要更改构造函数声明:
public Director(string name, int salaryPerMonth, int monthlyHours)
: base(name, salaryPerMonth, monthlyHours, 20000) { }
也就是说,当您使用base
调用基本构造函数时,省略monthlyBonus
参数,并硬编码该值(正如您已经做的那样)
由于这显然是一个课堂练习,我鼓励您提出一些问题,重点是为什么您还没有意识到您可以这样做,这样您就可以更好地理解base()
构造函数调用是如何工作的
现在,我只想指出,它本质上与任何其他方法调用相同,您可以在任何其他方法调用中使用它做任何事情。参数可以是您想要的任何表达式;它们不需要只是派生构造函数中参数的重复。这是我拥有的最快的解决方案otten还在这里。这个问题解决了。如果允许的话,我会在9分钟内将这个问题标记为解决。我实际上尝试了类似的方法,将
int monthlyBonus=20000
,而不是仅仅20000
。谢谢。回答得很好。谢谢。我喜欢你对它工作原理的深入解释,我认为它是可行的st类似于在没有任何继承的情况下,通常创建“普通”类的新对象。
public Director(string name, int salaryPerMonth, int monthlyHours)
: base(name, salaryPerMonth, monthlyHours, 20000) { }