Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 有没有办法访问mixin';使用mixin的类中的私有变量是?_Dart - Fatal编程技术网

Dart 有没有办法访问mixin';使用mixin的类中的私有变量是?

Dart 有没有办法访问mixin';使用mixin的类中的私有变量是?,dart,Dart,在dart中创建mixin时,可以像类一样声明属性和方法。声明私有属性/方法时,继承类似乎也应该有权访问此私有成员(例如,请参见下面的示例) 是否有方法使用mixin访问类中的mixin私有变量 如果不可能,我如何在mixin对象中声明成员,但在继承类的接口中使其私有 mixin.dart mixina{ 字符串propertyOne='1'; //任何继承类都无法访问此属性。 int_privateProperty=2; } class.dart B类带A{ 字符串get mixinStri

在dart中创建
mixin
时,可以像类一样声明属性和方法。声明私有属性/方法时,继承类似乎也应该有权访问此私有成员(例如,请参见下面的示例)

是否有方法使用
mixin
访问类中的
mixin
私有变量

如果不可能,我如何在
mixin
对象中声明成员,但在继承类的接口中使其私有

mixin.dart
mixina{
字符串propertyOne='1';
//任何继承类都无法访问此属性。
int_privateProperty=2;
}
class.dart
B类带A{
字符串get mixinString=>propertyOne;
//B类无法访问此属性。
int get mixinInt=>\u privateProperty;
}

否。库私有属性意味着您只能在同一个库中表示其名称。在任何其他库中,标识符
\u privateProperty
是一个不同的名称,一个专用于另一个库

如果您不能在同一个库中同时声明mixin和class,并且您确实需要访问该属性,那么您可以做很多事情来实现这一点

  • 将该属性公开,并告诉人们除非在子类中使用,否则不要使用它。如果他们愿意,他们仍然可以
  • 将属性公开并标记,让分析器告诉人们不要使用它,除非在子类中使用。如果他们愿意,他们仍然可以
  • 保持财产私有,并提供单独的访问方法:
    mixina{
    //任何继承类都无法访问此属性。
    int_privateProperty=2;
    静态int getPrivateProperty(A A)=>A.(u privateProperty;
    静态void setPrivateProperty(A,int值){
    a、 _privateProperty=价值;
    }
    }
    
    如果他们真的想去,任何人都可以去,但他们需要知道这一点 它来自
    A

否。库私有属性意味着您只能在同一个库中表示其名称。在任何其他库中,标识符
\u privateProperty
是一个不同的名称,一个专用于另一个库

如果您不能在同一个库中同时声明mixin和class,并且您确实需要访问该属性,那么您可以做很多事情来实现这一点

  • 将该属性公开,并告诉人们除非在子类中使用,否则不要使用它。如果他们愿意,他们仍然可以
  • 将属性公开并标记,让分析器告诉人们不要使用它,除非在子类中使用。如果他们愿意,他们仍然可以
  • 保持财产私有,并提供单独的访问方法:
    mixina{
    //任何继承类都无法访问此属性。
    int_privateProperty=2;
    静态int getPrivateProperty(A A)=>A.(u privateProperty;
    静态void setPrivateProperty(A,int值){
    a、 _privateProperty=价值;
    }
    }
    
    如果他们真的想去,任何人都可以去,但他们需要知道这一点 它来自
    A

在mixin类中创建一个指向继承类可以访问的
privateProperty
的公共getter。在mixin类中创建一个指向继承类可以访问的
privateProperty
的公共getter。很好的解释和替代选项。谢谢。很好的解释和其他选择。非常感谢。