我在Dart中有两个类,MyClass1和MyClass2,其中MyClass2扩展了MyClass1。在某些MyClass2函数中,我想访问一个在MyClass1中具有“私有”访问权限的变量。如果MyClass1和MyClass2在同一dart文件中声明,则如下所示:
class MyClass1 {
double _myprivatevar;
}
class MyClass2 extends MyClass1 {
MyClass2(double myvar){
this._myprivatevar = myvar;
}
}
一切都很好但是现在,如果MyClass2在其自己的dart文件中声明:
import 'package:test/myclass1.dart';
class MyClass2 extends MyClass1 {
MyClass2 (double myvar){
this._myprivatevar = myvar;
}
}
我有一个错误说:
未为类'MyClass2'定义了设置器'_myprivatevar'。尝试导入定义“ _myprivatevar”的库,更正名称为现有设置员的名称,或定义一个设置员或字段名为'_myprivatevar'.dart(undefined_setter)
如何解决此问题,并可以从另一个dart文件中定义的子类访问父私有变量?
如果唯一的问题是
初始化一个实例变量,那么您可以将变量的值作为构造函数参数传递给超类,从而让超类为您访问该变量:
class MyClass1 {
double _myPrivateVar;
MyClass1([double myPrivateValue]) : _myPrivateVar = myPrivateValue;
}
// In different library:
class MyClass2 extends MyClass1 {
MyClass2(double myVar) : super(myVar);
}
稍后将无法帮助您read
私有变量,它仍然只是超类和同一库中的其他代码,可以访问该变量。