Dart抽象私有方法

时间:2020-10-31 09:59:45

标签: dart

如何在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");
  }
}

我想从_walk实例中隐藏_talkJay

1 个答案:

答案 0 :(得分:1)

package:meta提供了一个@visibleForOverriding批注,该批注可能会满足您的要求。请注意,违反它只会产生分析警告,并且不会在运行时强制执行。

我个人认为,将本应私有的东西放在抽象基类中是一个坏主意,因为它们不应该成为接口的一部分。考虑改为:

abstract class Person {
  ...
}

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

现在您的库可以在内部从_Person派生类,并使用walktalk,而这些库根本不会暴露给库的外部使用者。