继承文字字符串问题的构造方法

Sup*_*cko 1 c# inheritance constructor abstract-class

这可能是一个很容易解决的问题.我是一名大学生,我们刚刚开始使用多态,所以这个概念对我来说仍然令人费解.

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));
}
Run Code Online (Sandbox Code Playgroud)

当实例化新存款时,我希望将文字字符串"存款"用作交易的描述.但是,我收到一条错误,指出'SampleNamespace.Deposit不包含一个带有一个参数的构造函数'.所以,字符串没有被继承,我不确定如何解决这个问题.我非常感谢任何帮助!

jms*_*msb 7

您的Deposit构造函数有两个参数:

public Deposit(string description, decimal amount) : base("Deposit", amount)
Run Code Online (Sandbox Code Playgroud)

由于您在调用base()时设置了"Deposit",因此在该构造函数中不需要"字符串描述".它应该看起来像:

public Deposit(decimal amount) : base("Deposit", amount)
Run Code Online (Sandbox Code Playgroud)

以下行不应再抛出错误:

fredSavings.AddTransaction(new Deposit(500.00M));
Run Code Online (Sandbox Code Playgroud)

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

这是一个旧的(但很好的)讨论为什么会出现这种情况:为什么构造函数不被继承?