如何在 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
派生类并使用 walk
和 talk
,并且它们根本不会暴露给您的图书馆的外部消费者。
关于Dart 抽象私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64620495/