这可能是一个很容易解决的问题。我是一名大学生,我们刚刚开始使用多态,所以这个概念对我来说仍然令人费解。
abstract class IncreaseTransaction
{
private string _Description;
private decimal _Amount;
protected IncreaseTransaction(string description, decimal amount)
{
_Description = description;
_Amount = amount;
}
}
class Deposit : IncreaseTransaction
{
public Deposit(string description, decimal amount) : base("Deposit", amount)
{
}
}
static void Main(string[] args)
{
Customer fred = new Customer("Fred");
SavingsAccount fredSavings = new SavingsAccount();
fredSavings.AddTransaction(new Deposit(500.00M));
}
当实例化新存款时,我想要文字字符串"存款"用作交易的描述。但是,我收到一条错误说明' SampleNamespace.Deposit不包含带有一个参数的构造函数'。所以,字符串没有被继承,我不确定如何解决这个问题。我非常感谢任何帮助!
答案 0 :(得分:7)
您的存款构造函数有两个参数:
public Deposit(string description, decimal amount) : base("Deposit", amount)
由于您在调用base()时设置了“Deposit”,因此在该构造函数中不需要“字符串描述”。它应该看起来像:
public Deposit(decimal amount) : base("Deposit", amount)
以下行不应再抛出错误:
fredSavings.AddTransaction(new Deposit(500.00M));
附加说明:构造函数不像成员或属性那样继承,但对子级和父级都是唯一的。子(Deposit)必须调用基类(IncreaseTransaction)构造函数,但它不需要在自己的构造函数中需要相同的参数。
这是一个陈旧(但很好)的讨论原因:Why are constructors not inherited?