为什么命名构造 调用父类构造器的时候 参数里拿不到name

来源:5-8 带你揭开Flutter中的面向对象(命名构造方法)

旋涡鸣人_

2019-11-09

``` /// 定义一个Dart 类

class Person {   String name;   int age;   Person(this.name, this.age) {
    print('Person: constructor');
    print(this.name);
    print(this.age);   } }

class Student extends Person {   String _school; // 私有变量 类之外访问不到   String city;   String country;   String name;   Student(this._school,String name, int age, {
    this.city,
    this.country = '中国'   }) :  name = '$country.$city',
        super(name, age) { 
    print('super:constructor');   }

  Student.cover(Student stu) : super(stu.name, stu.age) {
    print("命名构造方法:");   }

  void info() {
    print('scholl:$_school');
    print('name:${this.name}');
    print('age:$age');
    print('city:$city');   } } ``

print(this.name);
print(this.age); 里面在 调用命名构造器的时候 会出现null的情况。

写回答

1回答

CrazyCodeBoy

2019-11-11

因为在构造方法中你并没有将它和当前类的变量进行关联也就是赋值给当前类的变量。

可参考:

Student.cover(Student stu) : super(stu.name, stu.age) {
  this.name = stu.name;
  this.age = stu.age;
  print('命名构造方法');
}


1
1
慕村0213808
他问的不是父类的构造函数的输出么?跟下面这个关联什么关系
2020-08-14
共1条回复

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

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

4788 学习 · 3270 问题

查看课程