Flutter 零基础入门(十五):继承、多态与面向对象三大特性

文章目录

在前面的学习中,我们已经分别学过:

  • 类(Class)与对象(Object)
  • 构造函数、this、late
  • 抽象类(abstract)与接口思想

但你可能还没有一个整体感觉

👉 为什么要学这些?

👉 它们之间的关系是什么?

👉 Flutter 到底在用什么思想?

这一篇,我们来系统梳理面向对象的三大特性,也是你从"会写 Dart"到"理解 Flutter 架构"的关键一步。


一、什么是面向对象?

一句话理解:

用"对象"来描述真实世界中的事物

对象:

  • 有属性(数据)
  • 有行为(方法)

Dart、Flutter 都是强面向对象体系


二、面向对象三大特性概览

特性 解决的问题
封装 隐藏细节,控制使用方式
继承 复用代码,建立层级关系
多态 面向抽象编程,解耦逻辑

接下来我们逐一拆解。


三、封装(Encapsulation)

1️⃣ 什么是封装?

封装的核心是:

只暴露"该暴露的",隐藏"不该关心的"


2️⃣ Dart 中的封装体现

dart 复制代码
class User {
  final String _password;

  User(this._password);
}
  • _password 是私有属性
  • 外部无法直接访问

📌 下划线 _ 是 Dart 的私有约定(库级私有)。


3️⃣ 为什么要封装?

  • 防止误用
  • 降低耦合
  • 提高安全性

Flutter 中的很多类:

👉 你只能用,不能乱改


四、继承(Inheritance)

1️⃣ 什么是继承?

继承表示:

子类拥有父类的属性和方法


2️⃣ Dart 中的继承

复制代码
class Animal {
  void move() {
    print('moving');
  }
}

class Dog extends Animal {
  void bark() {
    print('bark');
  }
}

Dog:

  • 自动拥有 move
  • 还可以新增自己的行为

3️⃣ 重写(override)

复制代码
class Dog extends Animal {
  @override
  void move() {
    print('Dog is running');
  }
}

📌 用 @override 明确表示重写父类行为。


五、多态(Polymorphism)

这是最重要、也是最抽象的一点。


1️⃣ 什么是多态?

一句话理解:

同一个方法,不同对象,有不同表现


2️⃣ 多态示例

复制代码
abstract class Animal {
  void move();
}

class Dog extends Animal {
  @override
  void move() {
    print('Dog runs');
  }
}

class Bird extends Animal {
  @override
  void move() {
    print('Bird flies');
  }
}

3️⃣ 面向抽象编程

复制代码
void makeMove(Animal animal) {
  animal.move();
}

这里:

  • 不关心具体类型
  • 只关心是否遵守 Animal 规则

📌 这就是多态的精髓。


六、三大特性如何协同工作?

来看一个完整示例:

复制代码
abstract class Shape {
  double area();
}

class Circle extends Shape {
  final double r;

  Circle(this.r);

  @override
  double area() {
    return 3.14 * r * r;
  }
}

class Square extends Shape {
  final double side;

  Square(this.side);

  @override
  double area() {
    return side * side;
  }
}

统一使用:

复制代码
void printArea(Shape shape) {
  print(shape.area());
}

📌 这就是:

  • 封装:隐藏计算细节
  • 继承:共享 Shape 规则
  • 多态:不同形状不同实现

七、Flutter 为什么大量依赖三大特性?

Flutter 本质上是:

一个由无数 Widget 组成的面向对象系统

  • Widget 是抽象概念
  • StatelessWidget / StatefulWidget 是继承
  • build 方法是多态

你学到这里,已经站在了 Flutter 设计的门口。


八、新手常见误区

❌ 过度继承

❌ 类层级太深

❌ 用继承解决所有问题

📌 Flutter 更偏向:

组合 > 继承

(这个思想后面会专门讲)


九、这一篇你真正掌握了什么?

你已经不再是:

  • "堆代码"
  • "背语法"

而是在:

  • 设计结构
  • 抽象问题
  • 理解框架思想

这是质变


十、总结

本篇你系统掌握了:

  • 面向对象三大特性
  • Dart 中的具体体现
  • Flutter 架构背后的思想

🔜 下一篇预告

《Flutter 零基础入门(十六):Widget 基础概念与第一个 Flutter 页面》

下一篇开始:

🚀 正式进入 Flutter UI 世界

你将第一次:

  • 写 Flutter Widget
  • 理解 build 方法
  • 看懂 Flutter 页面是如何构成的
相关推荐
ZoeLandia2 小时前
Qiankun 生命周期与数据通信实战
前端·微前端·qiankun
二川bro2 小时前
详细解析 cesiumViewer.render() 和 requestAnimationFrame(render)
前端
zh_xuan2 小时前
kotlin对象表达式
开发语言·kotlin
前端付豪2 小时前
必知Node应用性能提升及API test 接口测试
前端·react.js·node.js
froginwe112 小时前
ECharts 旭日图:全面解析与应用指南
开发语言
yaoxin5211232 小时前
292. Java Stream API - 使用构建器模式创建 Stream
java·开发语言
王同学 学出来2 小时前
vue+nodejs项目在服务器实现docker部署
服务器·前端·vue.js·docker·node.js
Rysxt_2 小时前
Flutter与UniApp底层逻辑深度对比
flutter·uni-app
一道雷2 小时前
让 Vant 弹出层适配 Uniapp Webview 返回键
前端·vue.js·前端框架