美文网首页
Flutter/Dart - 类的继承

Flutter/Dart - 类的继承

作者: 沫之 | 来源:发表于2020-07-13 15:35 被阅读0次

    前言

    Dart中的继承:

    1.子类使用extends关键词来继承父类

    2.子类会继承父类里面可见的属性和方法,但是不会继承构造函数

    3.子类能复写父类的方法 getter和setter

    简单继承

    子类使用extends关键词来继承父类

    class Person {
      String name = '张三';
      num age = 30;
    
      void printInfo() {
        print('${this.name}----${this.age}');
      }
    }
    
    class Web extends Person {}
    
    main() {
      Web w = new Web();
      print(w.name);
      w.printInfo();
    }
    

    super关键词的使用

    class Person {
      String name;
      num age;
      Person(this.name, this.age);
      void printInfo() {
        print('${this.name}----${this.age}');
      }
    }
    
    class Web extends Person {
      Web(String name, num age) : super(name, age);
    }
    
    main() {
      Web w = new Web('hhh', 12);
      w.printInfo(); // hhh--- 12
    }
    

    实例化子类给父类构造函数传参

    子类里面可以扩展自己属性和方法

    class Person {
      String name;
      num age;
      Person(this.name, this.age);
      void printInfo() {
        print('${this.name}----${this.age}');
      }
    }
    
    class Web extends Person {
      String sex;
      Web(String name, num age, String sex) : super(name, age){
        this.sex = sex;
      }
      run(){
        print("${this.name}---${this.age}---${this.age}");
      }
    
    }
    
    main() {
      Web w = new Web('hhh', 12, '女');
      w.run(); // hhh--- 12
    }
    

    实例化子类给命名构造函数传参

    class Person {
      String name;
      num age;
      Person(this.name, this.age);
      Person.xxx(this.name, this.age); // 此处有修改
      void printInfo() {
        print('${this.name}----${this.age}');
      }
    }
    
    class Web extends Person {
      String sex;
      // 此处有修改
      Web(String name, num age, String sex) : super.xxx(name, age) {
        this.sex = sex;
      }
      run() {
        print("${this.name}---${this.age}---${this.age}");
      }
    }
    
    main() {
      Web w = new Web('hhh', 12, '女');
      w.run(); // hhh--- 12
    }
    

    覆写父类的方法

    class Person {
      String name;
      num age;
      Person(this.name, this.age);
      void printInfo() {
        print('${this.name}----${this.age}');
      }
    
      work() {
        print('${this.name}----${this.age}');
      }
    }
    
    class Web extends Person {
      String sex;
      Web(String name, num age, String sex) : super(name, age) {
        this.sex = sex;
      }
      run() {
        super.work(); //子类调用父类的方法
        print("${this.name}---${this.age}---${this.age}");
      }
    
      // 覆写父类的方法
      @override // 可以写 可以不写
      void printInfo() {
        print('姓名:${this.name}----年龄${this.age}');
      }
    }
    
    main() {
      Web w = new Web('hhh', 12, '女');
      w.printInfo();
      w.run();
    }
    

    相关文章

      网友评论

          本文标题:Flutter/Dart - 类的继承

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