Dart抽象私有方法

92dk7w1h  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(116)

如何在dart中拥有抽象私有方法?

// person.dart
abstract class Person{
  void _walk();  //Abstract Method
  void _talk();  //Abstract Method
}
// jay.dart
import "person.dart";
class Jay extends Person{
  @override
  void _walk() {
    print("Jay can walk");
  }
 @override
  void _talk() {
    print("Jay can talk");
  }
}

我想从Jay示例中隐藏_walk_talk

voj3qocg

voj3qocg1#

package:meta提供了一个@visibleForOverriding注解,它可以实现您想要的功能。请注意,违反它只会生成一个分析警告,并且不会在运行时强制执行。
我个人认为,把那些应该是私有的东西放在抽象基类中是一个坏主意,因为它们不应该是接口的一部分。考虑改为:

abstract class Person {
  ...
}

abstract class _Person extends Person {
  void walk();
  void talk();
}

现在你的库可以在内部从_Person派生类,并使用walktalk,它们根本不会暴露给你的库的外部消费者。

pcww981p

pcww981p2#

不是抽象类,但如果你想实现特定类的继承方法,那么你可以使用mixin;

mixin MixinName on ClassOne, ClassTwo {
   void function() {}
}

在ClassOne文件上;
带MixinName的ClassOne
通过这种方式,类1访问函数()。
我知道,这不是你的问题的答案,但它可能有助于有人谁想成功的微笑的问题。

相关问题