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

C# 继承文本字符串问题的构造函数,c#,inheritance,constructor,abstract-class,C#,Inheritance,Constructor,Abstract Class,这可能是一个简单的修复方法。我是一名大学生,我们刚刚开始学习多态性,所以这个概念对我来说仍然很困惑 abstract class IncreaseTransaction { private string _Description; private decimal _Amount; protected IncreaseTransaction(string description, decimal amount) { _Descrip

这可能是一个简单的修复方法。我是一名大学生,我们刚刚开始学习多态性,所以这个概念对我来说仍然很困惑

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不包含接受一个参数的构造函数”。因此,字符串没有被继承,我不确定如何修复它。我将非常感谢任何帮助

您的存款构造函数采用两个参数:

public Deposit(string description, decimal amount) : base("Deposit", amount)
因为您在对base的调用中设置了存款,所以在该构造函数中不需要“字符串描述”。它应该是这样的:

public Deposit(decimal amount) : base("Deposit", amount)
以下行不应再引发错误:

fredSavings.AddTransaction(new Deposit(500.00M));
附加说明:构造函数不像成员或属性那样被继承,但对子级和父级都是唯一的。子存款必须调用基类的IncreaseTransaction构造函数,但它不需要在自己的构造函数中使用相同的参数


这里有一个关于为什么会出现这种情况的老生常谈:

您的存款构造函数有两个参数:

public Deposit(string description, decimal amount) : base("Deposit", amount)
因为您在对base的调用中设置了存款,所以在该构造函数中不需要“字符串描述”。它应该是这样的:

public Deposit(decimal amount) : base("Deposit", amount)
以下行不应再引发错误:

fredSavings.AddTransaction(new Deposit(500.00M));
附加说明:构造函数不像成员或属性那样被继承,但对子级和父级都是唯一的。子存款必须调用基类的IncreaseTransaction构造函数,但它不需要在自己的构造函数中使用相同的参数


关于为什么会出现这种情况,这里有一个古老但很好的讨论:

前几天我试过了,但编译器仍然抛出了这个错误。我想它没有刷新是因为某种原因。无论如何,谢谢你的帮助。前几天我试过了,但编译器仍然抛出了那个错误。我想它没有刷新是因为某种原因。无论如何,谢谢你的帮助。