在Dart中,如何从另一个文件的子类访问父私有变量?

问题描述 投票:0回答:1

我在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文件中定义的子类访问父私有变量?

dart subclass private privileges
1个回答
0
投票
您必须公开属性,在同一个库中声明两个类,或者不从子类访问该属性。没有其他选择。

如果唯一的问题是

初始化一个实例变量,那么您可以将变量的值作为构造函数参数传递给超类,从而让超类为您访问该变量:

class MyClass1 { double _myPrivateVar; MyClass1([double myPrivateValue]) : _myPrivateVar = myPrivateValue; } // In different library: class MyClass2 extends MyClass1 { MyClass2(double myVar) : super(myVar); } 稍后将无法帮助您

read
私有变量,它仍然只是超类和同一库中的其他代码,可以访问该变量。

© www.soinside.com 2019 - 2024. All rights reserved.