C# 如果我有两个接口,一个类可以同时继承这两个接口吗?

C# 如果我有两个接口,一个类可以同时继承这两个接口吗?,c#,inheritance,interface,subclass,superclass,C#,Inheritance,Interface,Subclass,Superclass,我有一个带有2个接口的类,还有一些带有子类的超类,我希望超类继承这两个接口。如果我只是引用接口所在的类,它会工作吗?ie超类:Myinterfaces public class Myinterfaces { public interface IBakeable { int OvenTemp { get; } } public interface IAccounting { int Cost { get; } }

我有一个带有2个接口的类,还有一些带有子类的超类,我希望超类继承这两个接口。如果我只是引用接口所在的类,它会工作吗?ie超类:Myinterfaces

public class Myinterfaces
{
    public interface IBakeable
    {
        int OvenTemp { get; }
    }

    public interface IAccounting
    {
       int Cost { get; }
    }

    public enum Colors
    { 
        red = 1,
        blue,
        yellow
    }
}
下面是带有接口的类

public class Myinterfaces
{
    public interface IBakeable
    {
        int OvenTemp { get; }
    }

    public interface IAccounting
    {
       int Cost { get; }
    }

    public enum Colors
    { 
        red = 1,
        blue,
        yellow
    }
}
这里有一个超类的例子

public class CeramicsSuperClass : Myinterfaces
{
    public string ItemName { get; set; }
    public int Cost { get; set; }
    public int OvenTemp { get; set; }
}
public class Vases : CeramicsSuperClass
{
    private int _BaseDiam;
    public Vases(int diam)
    {
        _BaseDiam = diam;
    }

}

为一个类实现多接口的方式不正确,请尝试以下方法:

public class CeramicsSuperClass : IBakeable, IAccounting {
  public string ItemName { get; set; }
  public int Cost { get; set; }
  public int OvenTemp { get; set; }
}
一个类只能从另一个类继承,但它可以实现尽可能多的接口。当一个类从另一个类继承并实现某个接口时,应首先列出基类,然后再列出接口,如下所示:

//class A inherits from class B and implements 2 interfaces IC and ID
public class A : B, IC, ID {
  //...
}
简单回答: 您可以继承多个接口,而不是多个类

public interface InterfaceA 
{
    string PropertyA {get;}
}

public interface InterfaceB
{
    string PropertyB {get;}
}

public abstract class BaseClassForOthers : InterfaceA, InterfaceB
{
    private string PropertyA {get; private set;}
    private string PropertyA {get; private set;}

    public BaseClassForOthers (string a, string b)
    {
        PropertyA  = a;
        PropertyB  = b;
    }

}

public class SubClass : BaseClassForOthers 
{
    public SubClass (string a, string b)
        : base(a, b)
    {
    }

}
可能在这里查看将为您提供一般指导(关于接口使用的msdn链接):

是的,它有效,而且看起来你自己还没有试过?@KingKing我试过,我有问题。在主程序中,我试图将IBakeable和IAccounting类型添加到列表中,但它们不会接受来自超类或子类的任何实例化实例。它不起作用,因为您的类以错误的方式实现了多接口,有关详细信息,请参阅我的答案。