【问题标题】:Inheriting from abstract class, using methods with private variables从抽象类继承,使用带有私有变量的方法
【发布时间】:2015-07-22 20:17:48
【问题描述】:

在简化版本中,我有以下内容:

abstract class Days
{
  private readonly int _amount;

  protected virtual void UpdateAmount()
  {
    Proccess();
  }

  protected virtual void Process()
  {
    _amount += 1; 
  }
}

问题是我需要创建一个继承自 Days 的类,我需要在其中更改 UpdateAmounts() 的功能,但仍使用 Process() 中的相同功能。由于 Process 使用私有字段,是否有办法做到这一点而不仅仅是将 Process() 中的代码复制并粘贴到我的子类中?它不会让我使用 base.Process() 因为该方法引用了一个私有字段。

【问题讨论】:

  • “它不会让我使用 base.Process()”——什么是阻止你使用受保护方法的“它”?您能否发布您正在尝试实现的目标以及它如何失败的示例(您已经提到base.Process() 否则应该与stackoverflow.com/questions/3747711/… 等一些现有问题重复)。

标签: c# c#-4.0


【解决方案1】:

你将可以使用base.Process(),因为它是protected,它是否使用私有字段并不重要

class MyClass : Days
{    
    protected override void UpdateAmount()
    {
        base.Process();
    }
}

此代码有效

【讨论】:

  • 你是对的,我错过了这个问题。谢谢。
  • @mameesh, codroipo - 您介意编辑问题以匹配答案吗?到目前为止,问题只是随机声称此代码不起作用...
猜你喜欢
  • 2012-04-25
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 2011-08-05
  • 1970-01-01
  • 2016-05-08
相关资源
最近更新 更多