构造方法中可选参数应该是使用中括号包裹[]

来源:5-9 带你揭开Flutter中的面向对象(工厂构造方法)

绿色的青菜

2019-09-12

class Person {
  String name;
  String sex;
  int age;

  Person(this.name, this.sex, this.age);
}

class Student extends Person {
  int score;
  String className;
  String like;

  Student(String name, String sex, int age, this.score, [this.className = '三年一班', this.like = '无']) : super(name, sex, age);

  void sayHello() {
    print('Hello !');
  }

  @override
  String toString() {
    return '${this.name}, ${this.score}, ${this.className}, ${this.like}';
  }
}


void main(){
  Student stu = Student('小明', '男', 16, 99, '尖子一班', '打篮球');
  print(stu.toString()); // 打印: 小明, 99, 尖子一班, 打篮球

  Student stu2 = Student('小红', '女', 16, 99);
  print(stu2); // 打印: 小红, 99, 三年一班, 无
}
写回答

2回答

绿色的青菜

提问者

2019-09-12

/// 总结一下.

// 构造函数中的命名可选参数, 使用花括号{}
Student(String name, String sex, int age, this.score, {this.className = '三年一班', this.like = '无'}) : super(name, sex, age);
// 构造函数中的命名可选参数调用
Student stu = Student('小明', '男', 16, 99, className: '尖子一班', like: '打篮球');


// 构造函数中的未命名可选参数, 使用方括号[]
Student(String name, String sex, int age, this.score, [this.className = '三年一班', this.like = '无']) : super(name, sex, age);
// 构造函数中的未命名可选参数调用
Student stu = Student('小明', '男', 16, 99, '尖子一班', '打篮球');


2
0

绿色的青菜

提问者

2019-09-12

看到后面清楚了。 老师写的花括号是命名可选参数,也可以使用方括号定义可选参数。

0
0

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3270 问题

查看课程