110,502
社区成员
发帖
与我相关
我的任务
分享
interface IInterface
{
bool method();
}
abstract class ClassTest: IInterface
{
abstract bool IInterface.method() //这里是语法错误的,不允许使用abstract关键字
{
throw new NotImplementedException();
}
}
interface IInterface
{
bool method();
}
abstract class ClassTest : IInterface
{
public abstract bool method();
}
这样才不会报错,你那个是显示声明,必须要有实现public abstract bool IInterface.method();
不是必须要执行,这样声明为abstract 就行了abstract class ClassTest : IInterface
{
abstract public bool method();
}
你的那种写法,编译器应该明确告诉你了,不是什么“不允许abstract关键字”,而是“声明为abstract的方法不应该有方法体”。
abstract class ClassTest: IInterface
{
public bool method()
{
}
}
[/quote]
...接口本来就不能实现的。我的意思,如果抽象类实现了接口方法,那么抽象类的继承类 编译器就不会要求他实现接口方法。(此时只能人为的要求继承类去override,而不是语法意义上的要求,但是当工程量大的时候,可能会出现人忘记override了)而我希望由抽象类的继承类来实现接口方法,因为接口方法并不适合由这个抽象类实现。
由于接口没有“实现”部分,因此,我希望是由接口定义一套规范,组件之间的协同调用都是通过接口规定的。然后由一层抽象类实现接口,将一部分公共的业务逻辑写在抽象类中(因为接口没有“实现”),最后由继承类作出具体的业务逻辑。这样在组装过程中,我不必要关心具体的类,通过工厂模式等方法,在日后的重构中比较方便。
abstract class ClassTest: IInterface
{
public bool method()
{
}
}
abstract class ClassTest: IInterface
{
public bool method()
{
throw new NotImplementedException();
}
}