如何在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
2条答案
按热度按时间voj3qocg1#
package:meta
提供了一个@visibleForOverriding
注解,它可以实现您想要的功能。请注意,违反它只会生成一个分析警告,并且不会在运行时强制执行。我个人认为,把那些应该是私有的东西放在抽象基类中是一个坏主意,因为它们不应该是接口的一部分。考虑改为:
现在你的库可以在内部从
_Person
派生类,并使用walk
和talk
,它们根本不会暴露给你的库的外部消费者。pcww981p2#
不是抽象类,但如果你想实现特定类的继承方法,那么你可以使用mixin;
在ClassOne文件上;
带MixinName的ClassOne
通过这种方式,类1访问函数()。
我知道,这不是你的问题的答案,但它可能有助于有人谁想成功的微笑的问题。