美文网首页Dart
dart 类、面向对象

dart 类、面向对象

作者: 9吧和9说9话 | 来源:发表于2019-10-16 15:06 被阅读0次

    // class关键字定义类
    class Person {
      // 没有public、protected、privated 访问修饰符号
      int age;
      String name;
      // _开头 标记内部
      bool _isOK;
      // dart 和java不一样 多态机制
    //   不支持不同参数个数和位置的构造函数or方法
    //   Person(String name, int age) {
    //     this.name = name;
    //     this.age = age;
    //   }
      //上面的简化写法
      Person(this.name, this.age);
      // 命名构造函数
      Person.fromJson(Map json) {
        name = json["name"];
        age = json["age"];
      }
      
      // 实例方法
      void sayName() {
        print('person\' '+name);
      }
      
    }
    class Student extends Person {
      // 主类中调用父类的构造函数必须这么调用
      Student(String name, int age):super(name, age) {
    //     super(name, age); // not work
      }
    
    }
    void main() {
      Person p1 = new Person("ngnice", 10);
      print(p1?.name);
      Person p2 = new Person.fromJson({
        "name": "ngnice2",
        "age": 110
      });
      print(p2.age);
      Student s1 = new Student("alo", 199);
      s1.sayName();
      
    }
    

    Dart中特别的地方

    1. 不支持java式的多态(同名函数签名唯一)
    2. 支持Person(this.x, this.y)简单赋值语法
    3. 支持命名的构造函数Person.fromJson
    4. 默认情况下,子类的构造函数会自动调用超类的 无名无参数的默认构造函数,没有无名的构造函数,需要手动调用父类的构造函数
    5. 继承的时候调用父类的构造函数比较特别。

    注意点

    1. 没有访问控制修饰符 public privated protected等 通过_ 来标记是内部方法或属性

    相关文章

      网友评论

        本文标题:dart 类、面向对象

        本文链接:https://www.haomeiwen.com/subject/hvxumctx.html