Как я могу получить конструктор по умолчанию и параметризованный конструктор внутри одного класса в Dart / Flutter? - PullRequest
0 голосов
/ 16 июня 2020

Я знаю, что в C ++ мы могли бы без проблем иметь оба конструктора. В Dart, когда я пытаюсь написать два конструктора, появляется сообщение: «Конструктор по умолчанию уже определен»

class Human {
  double height;
  int age;

  Human()
  {
    height = 0;
      age = 0;
  }

  Human (double startingheight){        //The default constructor is already defined
    height = startingheight;
  }

}

Ответы [ 3 ]

1 голос
/ 16 июня 2020

Dart не поддерживает перегрузку методов / функций, и не будет иметь его в любом видимом будущем.

Здесь вы можете сделать параметры необязательными со значением по умолчанию:

В качестве позиционных аргументов:

class Human {
  double height = 175;
  Human([this.height]);
}

var human1 = Human(); 
var human = Human(180);

или с именем:

class Human {
  final double height;
  Human({this.height = 175});
}

var human1 = Human(); 
var human = Human(height: 180);
0 голосов
/ 16 июня 2020
class Human{
      Human(double height, int color) {
      this._height = height;
      this._color = color;
   }

   Human.fromHuman(Human another) {
      this._height = another.getHeight();
      this._color = another.getColor();
   }  
}

new Human.fromHuman(man);

Этот конструктор можно упростить от

Human(double height, int age) {
   this._height = height;
   this._age = age;
}

до

Human(this._height, this._age);

Именованные конструкторы также могут быть закрытыми, начав имя с _

Необходимы конструкторы со списком инициализаторов полей final:

class Human{
  final double height;
  final int age;

  Human(this.height, this.age);

  Human.fromHuman(Human another) :
    height= another.height,
    age= another.age;
}
0 голосов
/ 16 июня 2020

Попробуйте эти

//Using Default parameter values
Human({this.height = 0.0, this.age = 0});

// Named constructor
Human.startingHeight(double startingHeight){ 
    height = startingHeight;
    age = 0;//or don't use this if you want it null
}

Для получения дополнительной информации посетите эту страницу: https://dart.dev/guides/language/language-tour

...