【问题标题】:C# inheritance: implements + extendsC#继承:实现+扩展
【发布时间】:2012-12-17 19:50:03
【问题描述】:

有没有可能在C#做类似的事情:

public class MyClass implements ClassA extends ClassB 
{

}

我需要这个是因为:我有两个类,其中一个是 Interface,我将在我的类中实现它,但我也想使用另一个类的方法,它可以做一些我想做的事情在我的课堂上使用。

【问题讨论】:

  • 是的,您可以从一个类继承并实现任意数量的接口。
  • 使用ClassAClassB 有什么区别?您希望将两者都用作基类,对吗?
  • @ryadavilli 但是我该怎么做呢?我找不到要使用的正确语法...
  • 公开课 MyClass : ClassA, IMyInterface { }
  • @O.R.Mapper 类 A 是一个接口,它没有实现。我将实现我的 MyClass,classB 是一个实际的类,其中包含我希望我的类继承的代码。

标签: c# oop inheritance


【解决方案1】:

C# 不支持multiple inheritance。您可以从一个类派生并使用接口来满足您的其他需求。

语法:

class MyClass : Foo, IFoo, IBar
{
}

interface IFoo
{
}

interface IBar
{
}

class Foo
{
}

【讨论】:

  • 顺序重要吗?
  • 确实...如果从类继承,则必须先执行基类,然后是接口,否则编译器错误。自己测试过。
【解决方案2】:

试试这个:

using System;

public interface A
{
    void DoSmth();
}

public class B
{
    public void OpA() { }
    public void OpB() { }
}

public class ClassC : B, A
{
    public void DoSmth(){}
}

请记住,您不能从特定类级别的两个类继承,它可以只有一个类和任意数量的接口。

【讨论】:

    【解决方案3】:
        class Base
        {
        }
    
        interface I1
        {
        }
    
        interface I2
        {
        }
    
        class Derived : Base, I1, I2
        {
        }
    
        static void Main(String[] args)
        {
    
            Derived d = new Derived();
        }
    

    【讨论】:

      【解决方案4】:

      应该是这样的:

      public class MyClass: ClassB, InterfaceA{
      }
      

      ClassB 是基类

      InterfaceA 是一个接口

      你只能扩展一个基类,但你可以实现多个接口。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-26
        • 2017-05-18
        • 2013-12-19
        相关资源
        最近更新 更多