如何写一个类, 继承一个接口, 但不实现其中的方法?
inte易做图ce IFoo{
void foo();
}
class FooBase : IFoo
{
}
class MyFoo : FooBase
{
void foo()
{
}
}
我的意思是, 在 MyFoo 中才实现接口中的方法, 而不是在 FooBase 中实现. 如何写 FooBase 这个类? --------------------编程问答-------------------- class FooBase
{
}
这样写!你写的什么,就说明了什么。你写了它实现接口,结果又要不实现,这岂不是火星上的文字了嘛。 --------------------编程问答-------------------- “在 MyFoo 中实现接口中的方法”,那你就应该写
class MyFoo : FooBase, IFoo
{
void foo()
{
}
} --------------------编程问答-------------------- 虽然不能完全实现你要的功能。
但是你可以变通:在IFoo上点那个蓝色的线,选择实现接口。
Visual Studio 会为你生成空方法,里面丢出 NotImplementedException 异常,表明这个方法没有实现。
你也可以手写这样的代码:
class FooBase : IFoo
{
public void foo() { throw new NotImplementedException(); }
}
--------------------编程问答-------------------- 没明白你的用意何在? 继承接口一般都是实现接口的方法的。 --------------------编程问答-------------------- 我读程序就好象读小说一样,总是首先假设它是有实际意义的,除非要删除它。
当你写一个代码的接口,你就是去搞设计,而不是为了炫耀什么接口概念。你在定义上写了借口,OK,你就应该拿出这个接口相关的测试程序来测试它。如果你的测试出错了,你还是偷偷收拾起测试而不让别人知道你出现了异常、而你写的代码也还是提交给别人吗?
那么对不起,请离开我们的团队。 --------------------编程问答-------------------- 请用测试驱动的基本思维来看到编程,不要为了一些语法概念而编程。 --------------------编程问答-------------------- --------------------编程问答-------------------- 继承接口的类必须实现接口的方法。继承类的类则不需要。
--------------------编程问答-------------------- 看看什么是接口,怎么继承接口(实现方法) --------------------编程问答-------------------- "如何写一个类, 继承一个接口, 但不实现其中的方法? "
inte易做图ce IFoo
{
void foo();
}
class FooBase : IFoo
{
public virtual void foo(){}
}
class MyFoo : FooBase
{
}
这已经不符合接口的定义了... --------------------编程问答-------------------- 如果不想实现接口,就不要继承接口
或者你可以把你的接口进行拆分,实现多接口继承 --------------------编程问答--------------------
或者你把接口IFoo组合到FooBase类中
class FooBase
{
IFoo inte易做图ce;
} --------------------编程问答-------------------- 如果真的不用,那只能说明你的接口设计有问题,不妨将现有接口拆分成两个. --------------------编程问答-------------------- 可以添加个抽象类实现接口 然后用类继承抽象类
--------------------编程问答--------------------
+
加virtual 关键字可以不实现该方法 的方法体
而继承的类就可以override覆盖该方法 --------------------编程问答-------------------- 如果类FooBase不实现IFoo中的方法为什么要继承呢?MyFoo中才实现IFoo中的方法,那就直接继承好了
--------------------编程问答-------------------- 楼主本身就设计错误。
class MyFoo : FooBase, IFoo
{
void foo()
{
}
}
可变为:
inte易做图ce IFoo
{
void foo();
}
class FooBase
{
}
class MyFoo : FooBase, IFoo
{
void foo()
{
}
}
补充:.NET技术 , C#