C#中的多重继承,具有对基本方法的调用

问题描述 投票:0回答:2
using System;               


public class A
{
    public  virtual string GetDataFromA()
    {
       return "This Is base Class A" ;  
    }
}

public class B
{
    public  virtual string GetDataFromB()
    {
       return "This Is base Class B" ;  
    }
}

public class C : B,A
{
     public overide string GetDataFromB()
     {
         var data = base.GetDataFromB();
         return data + "This Is child Class C";
     }

     public overide string GetDataFromA()
     {
         var data = base.GetDataFromB();
         return data + "This Is child Class C";
     }
}

public class Program
{
    public static void Main()
    {
        var myCobject = new c();
        c.GetDataFromB();
        c.GetDataFromA();
    }
}

这是一个简单的问题,我知道我们不能在C#中使用多重继承,这就是我们使用接口的原因。但是我的问题是,当我使用多重继承时,我如何调用基类方法请让我知道我是否缺少某些东西。我想在我的C类中同时调用A和B基类方法。 >使用系统;公共类A {公共虚拟字符串GetDataFromA(){返回“这是基类A”; }}公共类B {公共虚拟字符串...

c# oop inheritance interface multiple-inheritance
2个回答
0
投票
如果您了解“在继承之上组合”的想法,则可以通过以下代码解决问题。我们选择构图的原因可以在此链接(https://medium.com/humans-create-software/composition-over-inheritance-cb6f88070205)中进行解释。还有其他方法可以解决此问题,其中一种是装饰器模式。但是简单起见,组合足以胜任这项工作。

public class A { public virtual string GetDataFromA() { return "This Is base Class A" ; } } public class B { public virtual string GetDataFromB() { return "This Is base Class B" ; } } public class C { private readonly _aService = new A(); private readonly _bService = new B(); public overide string GetDataFromB() { var data = _bService.GetDataFromB(); return data + "This Is child Class C"; } public overide string GetDataFromA() { var data = _aService.GetDataFromB(); return data + "This Is child Class C"; } } public class Program { public static void Main() { var myCobject = new c(); c.GetDataFromB(); c.GetDataFromA(); } }


0
投票
它有变得凌乱的风险。对此的简单解决方案是类组合,如下所示:
© www.soinside.com 2019 - 2024. All rights reserved.