并没有真正处理抽象方法,而是在抽象类中查看抽象方法。
protected abstract bool Validate()
{
}
当我创建上面的类时,我收到一个错误,告诉我需要按照常规方法指定返回类型。这是正确的还是我做错了什么?
答案 0 :(得分:5)
如果你宣布抽象方法,那么你不应该给身体
protected abstract bool Validate();
如果它不是抽象方法声明但你给出了抽象方法的实现,那么你应该使用方法方法中的bool
语句返回return
以满足声明中的返回类型。
protected abstract bool Validate()
{
//The method code
return false;
}
抽象方法声明引入了一个新的虚方法 没有提供该方法的实现。代替, 非抽象派生类需要提供自己的派生类 通过覆盖该方法实现。因为抽象的方法 没有提供实际的实现,抽象的方法体 方法只包含一个分号MSDN。
答案 1 :(得分:1)
抽象方法不应该有身体。它被赋予派生类以实现该方法。
protected abstract bool Validate();
答案 2 :(得分:0)
看一下文档:
在方法或属性声明中使用abstract修饰符来指示方法或属性不包含实现。 抽象方法具有以下特征: 抽象方法隐含地是虚方法。 抽象方法声明仅允许在抽象类中使用。 因为抽象方法声明没有提供实际的实现,所以没有方法体;方法声明只以分号结尾,签名后面没有花括号({})。
答案 3 :(得分:0)
在C#中,抽象方法没有实现,因此您的代码应如下所示:
//no { and } in there
protected abstract bool Validate();
您无法创建抽象类的实例,您应该从抽象类创建另一个派生的类,并在该新类中实现此方法。
答案 4 :(得分:0)
正如其他人提到的抽象方法没有实体。 他们不这样做的原因是类不能有实例。这意味着你永远不会有抽象类的对象。 您必须在具体类
中扩展抽象类和实现主体