当前位置:编程学习 > C#/ASP.NET >>

如何写一个类, 继承一个接口, 但不实现其中的方法?

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
    {
    }
--------------------编程问答-------------------- 看看什么是接口,怎么继承接口(实现方法) --------------------编程问答-------------------- "如何写一个类, 继承一个接口, 但不实现其中的方法? "
这已经不符合接口的定义了... --------------------编程问答-------------------- 如果不想实现接口,就不要继承接口
或者你可以把你的接口进行拆分,实现多接口继承 --------------------编程问答--------------------
引用楼主 hproof 的回复:
inte易做图ce IFoo
{
    void foo();
}
class FooBase : IFoo
{
}
class MyFoo : FooBase
{
    void foo()
    {
    }
}

我的意思是, 在 MyFoo 中才实现接口中的方法, 而不是在 FooBase 中实现. 如何写 FooBase 这个类?

或者你把接口IFoo组合到FooBase类中
class FooBase 
{
   IFoo inte易做图ce;
} --------------------编程问答-------------------- 如果真的不用,那只能说明你的接口设计有问题,不妨将现有接口拆分成两个. --------------------编程问答-------------------- 可以添加个抽象类实现接口 然后用类继承抽象类 
   --------------------编程问答--------------------
引用 8 楼 mj_dangerous 的回复:
继承接口的类必须实现接口的方法。继承类的类则不需要。
C# code

    inte易做图ce IFoo
    {
        void foo();
    }
    class FooBase : IFoo
    {
        public virtual void foo(){}
    }

    class MyFoo : FooBase
    {
    ……

+
加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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,