Dart- 继承和多态

133 阅读12分钟

Dart 知识点 - 继承和多态

继承

Dart 中的继承是单继承,也就是一个类只能有一个直接的父类。默认继承父类 Object 类。使用 extends 关键字,子类会继承父类的属性和方法。

void main() {
  Child child = new Child();
  child.name = 'Jimmy';
  child.sayHi(); // Jimmy say Hi.
}

class Father {
  String name = ''; // 属性 - 名称
  
  // 方法名
  void sayHi() {
    print(this.name + ' say Hi.');
  }
}

class Child extends Father {
  double height = 0.0;
}
复制代码

混入(Mixin)的语法,允许子类继承父类时混入其他的类。后面再讲解。

Child 继承了 Father 类的方法 sayHi(),那么我们子类中能否使用这个方法呢?答案是能的。这里就涉及到方法重写了。我们在子类中新建一个父类同名的方法 sayHi() 即可,如下:

class Child extends Father {
  double height = 0.0;
  
  void sayHi() {
    print('Child say Hi');
  }
  
  // @override
  // void sayHi() {
  //   print('Child say Hi');
  // }
}
复制代码

再次运行代码 child.sayHi(); 就会输出 Child say Hi 的文案了。

你可以为方法重写添加上 @override 的关键字,推荐加上关键字的写法,让人知道这个方法在父类上存在的。

多态

多态是同一种行为具有不同表现形式或形态。

优点:

  • 消除类型之间的耦合关系
  • 可替代性
  • 可扩充性
  • 接口性
  • 灵活性
  • 简化性

存在的三个必要条件:

  • 继承
  • 重写
  • 父类引用指向子类对象
void main() {
  Animal dog = new Dog(); 
  dog.eat(); // Dog eat meat.
  
  Animal sheep = new Sheep();
  sheep.eat(); // Sheep eat grass.
}

class Animal {
  void eat() {
    print('Animal class eat.');
  }
}

class Dog extends Animal {
  @override
  void eat() {
    print('Dog eat meat.');
  }
}

class Sheep extends Animal {
  @override
  void eat() {
    print('Sheep eat grass.');
  }
}
复制代码

比如上面的示范。Dog 和 Sheep 都继承于 Animal,两者都重写了 Animal 中的 eat() 方。上面声明的两个对象实例都是父类的 Animal,但是实际指向的都是子类的一个对象。

Animal dog = new Dog(); 
Animal sheep = new Sheep();
复制代码

往期精彩推荐

如果读者觉得文章还可以,不防一键三连:关注➕点赞➕收藏

分类:

flutter

Flutter 相关的文章

关注专栏

安装掘金浏览器插件

多内容聚合浏览、多引擎快捷搜索、多工具便捷提效、多模式随心畅享,你想要的,这里都有!

前往安装

评论

相关推荐

相关文章

纯 CSS 实现十个还不错的 Loading 效果

101点赞

 

 · 

 

12评论

JavaScript 事件循环机制

66点赞

 

 · 

 

15评论

10个JS优化小技巧

250点赞

 

 · 

 

49评论

前端仔学学设计模式--单例模式

23点赞

 

 · 

 

6评论

10 个不错的 CSS 小技巧

794点赞

 

 · 

 

68评论

目录

下一篇


Dart 知识点 - 构造方法

\