Flutter学习笔记_Dart:类的继承和super关键字

Dart中的类的继承:
1、子类使用extends关键词来继承父类
2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数
3、子类能复写父类的方法 getter和setter

1.简单继承

可见继承自Person的子类web可以直接访问父类的方法和属性

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

}

main(){
    
       

  Web w=new Web();
  print(w.name);
  w.printInfo();
 
}

2.super关键字

super的作用:用于实例化自类给父类构造函数传参

在实例化子类的时候将name和age传给父类的构造函数

super的位置和初始化列表一样,所以super也是在执行当前构造函数之前把参数传递给父类

class Person {
    
    
  late String name;
  late 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('张三', 12);
  w.printInfo();


}

此外,子类不但可以访问父类除了构造函数以外的所有属性和方法,子类还可以有自己的方法:

class Person {
    
    
  String name;
  num age; 
  Person(this.name,this.age);
  void printInfo() {
    
    
    print("${this.name}---${this.age}");  
  }
}

class Web extends Person{
    
    
  late String sex;
  Web(String name, num age,String sex) : super(name, age){
    
    
    this.sex=sex;
  }
  run(){
    
    
   print("${this.name}---${this.age}--${this.sex}");  
  }
  
}

main(){
    
     

  // Person p=new Person('李四',20);
  // p.printInfo();

  // Person p1=new Person('张三',20);
  // p1.printInfo();


  Web w=new Web('张三', 12,"男");

  w.printInfo();

  w.run();

}

可以用super给命名构造函数传参,方法一样:

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 {
    
    
  late String sex;
  Web(String name, num age, String sex) : super.xxx(name, age) {
    
    ///给命名构造方法传参直接加上命名构造方法的方法名即可
    this.sex = sex;
  }
  run() {
    
    
    print("${this.name}---${this.age}--${this.sex}");
  }
}

main() {
    
    
  // Person p=new Person('李四',20);
  // p.printInfo();

  // Person p1=new Person('张三',20);
  // p1.printInfo();

  Web w = new Web('张三', 12, "男");

  w.printInfo();

  w.run();
}

猜你喜欢

转载自blog.csdn.net/weixin_46136019/article/details/128879645