代码之家  ›  专栏  ›  技术社区  ›  Jaafar Melhem

如何在飞镖中将mixin制作成密封类

  •  0
  • Jaafar Melhem  · 技术社区  · 2 年前

    如何使mixin类“C”成为密封类不能在其库外扩展的类?

    class A extends B with C{}
    sealed class B{}
    mixin class C{}
    

    我不希望C类被“a”类以外的类使用

    1 回复  |  直到 2 年前
        1
  •  1
  •   A-E    2 年前

    实现这一目的有一些棘手的方法:

    如您所知,将您的mixin标记为私人mixin( dart中的隐私是库级别而不是类级别 )所以它不能在图书馆外使用。

    class A extends B with _C{}
    sealed class B{}
    mixin class _C{}
    

    另一种方式是,您可以将mixin转换为密封类,这也可以实现您的目的,并且 使生效 它 dart中不允许多重继承: 钻石问题 )

    class A extends B implements C{}
    sealed class B{}
    sealed class C{}
    

    最后,类C不能在声明它的库之外使用,可能还有其他方法可以实现您的目的。有关更多信息,请参阅 Class Modifiers Reference

    希望对你有所帮助。