c#抽象基类中的属性

Rüd*_*ger 6 c# properties interface abstract

我有一个我无法解决的奇怪问题.当我尝试编译以下剪切时,我收到此错误:

'AbstractClass'没有实现接口成员'Property'(编译器错误CS0535)

在线帮助告诉我使我的AbstractClass抽象,它是.谁能告诉我哪里出错了?

干杯Rüdiger

public interface IBase {
    string Property { get; }
}

public abstract class AbstractClass : IBase
{
    public override string ToString()
    {
        return "I am abstract";
    }
}

public class ConcreteClass : AbstractClass
{
    string Property { 
        get {
            return "I am Concrete";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

dah*_*byk 20

AbstractClass需要PropertyIBase界面提供实现,即使它只是抽象本身:

public abstract class AbstractClass : IBase
{
    public override string ToString()
    {
        return "I am abstract";
    }

    public abstract string Property { get; }
}
Run Code Online (Sandbox Code Playgroud)

更新: Luke是正确的,具体实现需要指定Property是一个覆盖,否则你将得到一个"不实现继承的抽象成员"错误:

public class ConcreteClass : AbstractClass
{
    public override string Property { 
        get {
            return "I am Concrete";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您还需要使用`override`修饰符在`ConcreteClass`上声明`Property`. (3认同)