
在前面的学习中,我们已经分别学过:
但你可能还没有一个整体感觉:
👉 为什么要学这些? 👉 它们之间的关系是什么? 👉 Flutter 到底在用什么思想?
这一篇,我们来系统梳理面向对象的三大特性,也是你从“会写 Dart”到“理解 Flutter 架构”的关键一步。
一句话理解:
用“对象”来描述真实世界中的事物
对象:
Dart、Flutter 都是强面向对象体系。
特性 | 解决的问题 |
|---|---|
封装 | 隐藏细节,控制使用方式 |
继承 | 复用代码,建立层级关系 |
多态 | 面向抽象编程,解耦逻辑 |
接下来我们逐一拆解。
封装的核心是:
只暴露“该暴露的”,隐藏“不该关心的”
class User{
final String _password;
User(this._password);
}
_password 是私有属性📌 下划线 _ 是 Dart 的私有约定(库级私有)。
Flutter 中的很多类: 👉 你只能用,不能乱改
继承表示:
子类拥有父类的属性和方法
class Animal {
void move() {
print('moving');
}
}
class Dog extends Animal {
void bark() {
print('bark');
}
}
Dog:
moveclass Dog extends Animal {
@override
void move() {
print('Dog is running');
}
}
📌 用 @override 明确表示重写父类行为。
这是最重要、也是最抽象的一点。
一句话理解:
同一个方法,不同对象,有不同表现
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');
}
}
void makeMove(Animal animal) {
animal.move();
}
这里:
📌 这就是多态的精髓。
来看一个完整示例:
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());
}
📌 这就是:
Flutter 本质上是:
一个由无数 Widget 组成的面向对象系统
你学到这里,已经站在了 Flutter 设计的门口。
❌ 过度继承 ❌ 类层级太深 ❌ 用继承解决所有问题
📌 Flutter 更偏向:
组合 > 继承
(这个思想后面会专门讲)
你已经不再是:
而是在:
这是质变。
本篇你系统掌握了:
《Flutter 零基础入门(十六):Widget 基础概念与第一个 Flutter 页面》
下一篇开始: 🚀 正式进入 Flutter UI 世界
你将第一次: