15.Dart多态

202 阅读1分钟

Dart的多态

  • 允许将子类类型的指针赋值给父类类型的指针,同一个函数调用会有不同的执行效果。
  • 子类的实例赋值给父类的引用。
  • 多态就是父类定义一个方法不去实现,让继承他的子类去实现,每个子类有不同的实现。
main(List<String> args) {
  var dog = new Dog();
  dog
    ..eat()
    ..run()
    ..sleep()
    ..printInfo();
  Animal a = new Dog();
  a
    ..eat()
    ..run();
  // ..sleep();  //sleep()是在子类中创建,父类中不存在,父类无法调用。
  Animal c = new Cat();
  c
    ..eat()
    ..run();
  // ..sleep();  //sleep()是在子类中创建,父类中不存在,父类无法调用。
}

abstract class Animal {
  eat(); //抽象方法
  run(); //抽象方法
  printInfo() {
    print('抽象类中的普通方法~~');
  }
}

class Dog extends Animal {
  @override
  eat() {
    // TODO: implement eat
    // throw UnimplementedError();
    print('小狗吃饭~~');
  }

  @override
  run() {
    // TODO: implement run
    // throw UnimplementedError();
    print('小狗在跑~~');
  }

  sleep() {
    print('小狗在睡觉~~');
  }
}

class Cat extends Animal {
  @override
  eat() {
    // TODO: implement eat
    // throw UnimplementedError();
    print('小猫吃饭~~');
  }

  @override
  run() {
    // TODO: implement run
    // throw UnimplementedError();
    print('小猫在跑~~');
  }

  sleep() {
    print('小猫在睡觉~~');
  }
}