在 dart 中创建 mixin
时,您可以像类一样声明属性和方法。在声明私有属性/方法时,继承类似乎也应该有权访问此私有成员(例如参见下文)。
有没有办法使用 mixin
访问类中 mixin
的私有变量?
如果不可能,我如何在 mixin.dart
对象中声明一个成员,但在继承类的接口中将其设为私有。
mixin A {
String propertyOne = '1';
// This property is not accessible to any inheriting class.
int _privateProperty = 2;
}
class.dart
class B with A {
String get mixinString => propertyOne;
// This property is not accessible to the B class.
int get mixinInt => _privateProperty;
}
{{1}}
答案 0 :(得分:2)
没有。库私有的属性意味着您只能在同一个库中表达它的名称。在任何其他库中,标识符 _privateProperty
是一个不同的名称,是该其他库的私有名称。
如果您不能在同一个库中同时声明 mixin 和 class,并且您肯定需要访问该属性,那么您可以做任何数量的事情来允许。
@protected
,以便让分析器告诉人们除了在子类中之外不要使用它。如果他们愿意,他们仍然可以。mixin A {
// This property is not accessible to any inheriting class.
int _privateProperty = 2;
static int getPrivateProperty(A a) => a._privateProperty;
static void setPrivateProperty(A a, int value) {
a._privateProperty = value;
}
}
如果他们真的想要,任何人仍然可以进入该物业,但他们需要知道
它来自A
。