【问题标题】:Calling base method from two different derived classes C#从两个不同的派生类 C# 调用基方法
【发布时间】:2020-12-16 19:11:55
【问题描述】:

我是 OOP 新手,这个问题可能很简单,但找不到答案。任何帮助都会很棒!

如果我有一个基类 A,它有一个称为 DoAction() 的方法

base class A
{
    void DoAction(string s)
    {
       print s;
    }
}

我还有两个派生类 B 和 C

derived class B : A
{
    string b = "I am in B class";
    base.DoAction(b);
}

derived class C : A
{
    string c = "I am in C class";
    base.DoAction(c);
}

我的问题是,如果基类的 DoAction() 方法被两个派生类调用((同时)),我的代码会在运行时解决任何问题吗?还是每个派生类都有自己的基方法副本?

相同的概念是否适用于基类中的事件?我的意思是如果我同时从两个不同的派生类调用同一个事件。

谢谢

【问题讨论】:

  • 请说明“同时”。
  • 我的意思是说两个派生类碰巧同时执行两个不同的任务(每个一个),这些任务需要调用基本方法
  • 您的问题归结为类和类实例(对象)之间的区别。详细了解这种差异,您将能够自己回答这个问题

标签: c# inheritance methods multiple-inheritance derived-class


【解决方案1】:

只要代码不依赖同一条数据,就不会遇到任何问题。

【讨论】:

  • 感谢您的回答。我刚刚更新了执行打印任务的代码,你的意思是如果我这样的话就不会有任何问题吗?
  • 您不会有任何问题。我的意思是,只要您不修改另一个所依赖的数据,可能会导致种族问题,就可以了。在上述情况下,在 B 类和 C 类中,打印将按照编写的代码执行的顺序发生。没有问题。
  • 这意味着它是所有派生类的单一方法不是每个派生类都有它自己的基方法副本吗?正确的。抱歉,我只是想理解这个概念。
  • 任何派生类的实例都将继承其父类的成员。因此,如果您构造从 A 类派生的 B 类,则 B 类将继承成员函数 DoAction() 并能够作为其自身的成员独立执行它。想一想:您使用具有成员 Death() 的基本角色制作游戏。有孩子兽人和精灵。 Orc 的实例可以调用 Death(),Elf 的实例也可以调用,两者都不关心。当他们的每个 Death() 被执行时,他们都死了。
  • 非常感谢您的帮助!
猜你喜欢
  • 2016-01-01
  • 1970-01-01
  • 2014-03-17
  • 2011-05-11
  • 1970-01-01
  • 2018-11-11
  • 2015-01-04
  • 2015-04-08
  • 1970-01-01
相关资源
最近更新 更多