如何在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
实例中隐藏_talk
和Jay
答案 0 :(得分:1)
package:meta
提供了一个@visibleForOverriding
批注,该批注可能会满足您的要求。请注意,违反它只会产生分析警告,并且不会在运行时强制执行。
我个人认为,将本应私有的东西放在抽象基类中是一个坏主意,因为它们不应该成为接口的一部分。考虑改为:
abstract class Person {
...
}
abstract class _Person extends Person {
void walk();
void talk();
}
现在您的库可以在内部从_Person
派生类,并使用walk
和talk
,而这些库根本不会暴露给库的外部使用者。