Dart 抽象私有(private)方法

标签 dart

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

// 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

最佳答案

package:meta提供@visibleForOverriding注释可能会做你想做的事。请注意,违反它只会生成分析警告,并且不会在运行时强制执行。

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

abstract class Person {
  ...
}

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

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

关于Dart 抽象私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64620495/

相关文章:

flutter - 如何在 flutter 中按日期动态排序?

asynchronous - 如何使用异步函数异步监听 Firestore 中的值?

flutter - flutter :如何检测键盘?

flutter - 如何在 Flutter Dart 中实现插件架构

flutter - Future<List> 在 Flutter 中列出对象

flutter - 在 flutter 中动态分配图像

javascript - 解决 Cloud Functions 中未定义的 "TypeError: Cannot read property ' 数据'

dart - 参数长度未知的自定义元数据?

MacOS 10.15 Catalina 的 Flutter 问题

ios - Flutter(iOS) -"No CupertinoLocalizations found",如何解决?