Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让抽象类要求接口由子类实现?_C#_Interface_Abstract - Fatal编程技术网

C# 如何让抽象类要求接口由子类实现?

C# 如何让抽象类要求接口由子类实现?,c#,interface,abstract,C#,Interface,Abstract,我想创建一个抽象类,它对其子类必须实现接口施加限制。我希望避免在抽象类中实现接口类。下面的代码不符合我的要求。有人对我能做什么有建议吗 public interface IItem() { bool IsUsable(); } public abstract class Item : IItem { MemberVar var; public void DoSomething() { //Do something } } public

我想创建一个抽象类,它对其子类必须实现接口施加限制。我希望避免在抽象类中实现接口类。下面的代码不符合我的要求。有人对我能做什么有建议吗

public interface IItem()
{
     bool IsUsable();
}

public abstract class Item : IItem
{
    MemberVar var;
    public void DoSomething()
    {
        //Do something
    }
}

public class Something : Item
{
     public bool IsUsable()
     {
         return true;
     }
}

只需在抽象类中使方法
抽象即可:

public abstract class Item : IItem
{
    //...

    public abstract bool IsUsable();
}
在继承
类的类中,使用
覆盖
关键字:

public override bool IsUsable()
{
    // Do stuff
}
VS可以通过右键单击父抽象类并选择
实现抽象类
,自动添加覆盖实现存根:


使用抽象方法和/或属性在基类中实现接口

只需向接口需要实现的每个方法/属性添加
abstract
关键字即可

例如,这就是
DoSomething()
方法的外观:

public abstract void DoSomething();

这样,派生类就必须自己实现接口。

子代方法必须使用public override bool isavailable(){}我试图编辑这个问题,但仍然认为应该编辑它,因为这个答案并没有完全给出正确答案的代码。