继承文字字符串问题的构造函数

本文关键字:构造函数 问题 字符串 文字 继承 | 更新日期: 2023-09-27 18:00:19

这可能是一个简单的问题。我是一名大学生,我们刚刚开始多态性,所以这个概念仍然让我感到困惑

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));
}

当实例化一个新的存款时,我希望使用文字字符串"deposit"作为交易的描述。但是,我收到一个错误,说明"SampleNamespace.Deposit不包含接受一个参数的构造函数"。所以,字符串没有被继承,我不确定如何解决这个问题。如果有任何帮助,我将不胜感激!

继承文字字符串问题的构造函数

Deposit的构造函数需要两个参数:

public Deposit(string description, decimal amount) : base("Deposit", amount)

由于您在对base()的调用中设置了"Deposit",因此在该构造函数中不需要"string description"。它应该看起来像:

public Deposit(decimal amount) : base("Deposit", amount)

以下行不应再抛出错误:

fredSavings.AddTransaction(new Deposit(500.00M));

其他解释:构造函数不像成员或属性那样继承,而是对子级和父级都是唯一的。子类(Deposit)必须调用基类的(IncreaseTransaction)构造函数,但它不需要在自己的构造函数中要求相同的参数。

这里有一个关于为什么会出现这种情况的古老(但很好)的讨论:为什么构造函数没有被继承?