Как использовать переменную из другого класса

#dart

#dart

Вопрос:

У меня довольно простой вопрос. Как я могу использовать переменные из разных классов в dart?

 class ContainsVariable {

  var variable = 1;

}

class DoesNotContainVariable {

  var useVariable = variable   1; // This gives me an error saying:
                                  // Undefined name 'variable' 

}
  

Ответ №1:

Наличие собственной области видимости является очень фундаментальной особенностью классов в объектно-ориентированном программировании, соответствующей принципам ООП.

Также обратите внимание, что из вашего кода кажется, что вы неправильно поняли идею создания экземпляра в объектно-ориентированном программировании, поскольку вы пытаетесь установить переменную экземпляра без создания экземпляра класса. Я настоятельно рекомендую изучить эту тему, чтобы получить больше понимания.

При этом, безусловно, существует множество способов достичь того, чего вы хотите. Поскольку ваш пример кода очень общий, я не совсем уверен, что вы пытаетесь сделать, поэтому я приведу 2 примера, которые могут быть полезны:

Вариант 1 — статическая переменная-член

Вы можете создать статический элемент (уровня класса), который будет одинаковым для всех объектов.

 
class ContainsVariable {

  static var variable = 1;

}

class DoesNotContainVariable {

  var useVariable = ContainsVariable.variable   1; // here, you are using a
                                                   // static (class) variable, 
                                                   // not an instance variable. 
                                                   // That is why you are using 
                                                   // the class name.                                 

}

  

Вариант 2 — создание экземпляра

Вы можете создать экземпляр класса — создав объект этого класса — и получить доступ к члену этого объекта. Обратите внимание, что здесь нет статического оператора.

 
class ContainsVariable {

  var variable = 1;

}

class DoesNotContainVariable {

  var instanceOfContainsVariable;
  var useVariable; 

  DoesNotContainVariable(){ // this is a constructor function
    var instanceOfContainsVariable = new ContainsVariable();
    useVariable = instanceOfContainsVariable.variable   1;
  }

}