代码之家  ›  专栏  ›  技术社区  ›  elmattic

我应该使用inherit还是interface?

  •  2
  • elmattic  · 技术社区  · 15 年前

    有什么区别:

    type IFooable =
        interface IDisposable
    
        abstract Foo : (unit -> unit)
    

    type IFooable =
        inherit IDisposable
    
        abstract Foo : (unit -> unit)
    

    是吗?

    如果等效,在哪种情况下我应该使用一个而不是另一个? 谢谢!

    3 回复  |  直到 15 年前
        1
  •  6
  •   Brian    15 年前

    (我原以为)你必须在(最多一个)基上使用“inherit” . 您可以将“interface”用于要实现的任何接口。

    因此,在IDisposable的情况下,它必须是“interface”。

    编辑,好吧,编译器允许,但那可能是个错误,我看

    编辑:事实证明,这可能是另一种错误,而且接口可能会迫使您使用“inherit”来继承其他接口,其思想是“inherited”成员在“implicit interface”意义上始终直接可见,而类上的“interface”声明是“explicit”接口,需要转换到该接口类型。PE使用这些成员。不管怎样,我们可能会在语言语法中消除这种灵活性,这样就只有一种方法来编写它,而不是两种等价的方法。

        2
  •  0
  •   Oren Mazor    15 年前

    我倾向于将继承用于真正的OOP(即x isa y)和接口作为一种装饰器实现。

    也许这不是一种得体的方式,但我们很喜欢。

    我的意思是x将继承y,但是我们想从v、w和z赋予它一些额外的功能。

    捷达是一辆汽车,但同时也是伊迪塞尔、伊格曼、伊博肯。

    这正是我当前项目的方式,我可能会因为“滥用OOP”而被否决。

        3
  •  -1
  •   L Digital Dash    15 年前

    如果您只打算使用抽象方法,那么应该使用接口。因为只能继承一个类,但可以实现多个接口。