前言
在Dart中,类与对象是构建应用程序的基石。它们不仅是代码组织的核心,更是实现面向对象编程理念的关键。接下来,让我们一起深入探索Dart中的类与对象,揭开它们的神秘面纱。
一、类
类是创建对象的蓝图或模版。
1.1、类的定义
类是创建对象的蓝图或模版。它定义了对象应该有的属性和方法,但其并不是具体存在的。 关于类的定义似乎有点晦涩难懂,我们通过一个例子来理解一下:
类如同上图中的汽车结构图,它定义了每辆汽车(对象)都应该有的轮子、车门等属性,还定义了汽车加速、减速等方法,但其并不是具体存在的。
1.2、类的抽象性
类是在对象之上的抽象,是一个抽象的概念,描述了一组具有相同属性与方法的对象。
实现类: 将一组具有相同属性与方法的对象抽象为一个类。
1.3、类的分类
- 实体类:实体类的对象表示为现实世界中的实体,如车,人等。
- 接口类:接口类的对象为用户提供一种与系统合作交互的方式。分为人和系统两类。
- 控制类:控制类的对象用来控制活动流,充当协调者。
类的代码示例:
class Car{
// 属性
String color;
String size;
// 方法
void start(){
print('start');
}
}
二、对象
对象是连接现实世界与数字世界的桥梁。
2.1、对象的定义
对象是数据(属性或状态)和作用于数据的操作(行为或方法)的封装体(一种信息隐蔽化技术,用于将生产者与使用者分离,将对象的定义与实现分离)。用于描述客观事物的一个实体。
理解:对象如同上图中的各种颜色的小汽车,他们分别具有自己的属性(颜色、品牌等)与行为(加速、减速等行为),他们是上图中汽车类的一种,也就是说他们是车类的一种实例。而车类是各种各样汽车对象的抽象,将各种各样汽车具有的相同属性或方法进行抽象为一个车类。
2.2、对象的特性
- 属性: 对象的静态特征,描述了对象的状态或存储对象的数据。可以是基本数据类型或复杂数据类型。
- 例如:车的颜色、大小、轮子等属性
- 方法: 对象的动态特征,定义了对象具有的操作或行为。通常用于改变对象的属性或执行与对象相关的计算。
- 例如:车的加速、减速等行为。
- 标识: 每个对象具有唯一的标识,尽管对象之间具有相同的属性与方法,他们仍然是不同的实体。通常是通过内存地址或唯一ID来实现。
2.3、对象的生命周期
- 声明:声明一个对象引用,并未创建实际的对象。
- 创建:使用 new 关键字或其他方式创建对象,并分配内存。
- 初始化:通过构造函数设置对象的初始状态。
- 使用:访问对象的属性或调用方法
- 销毁:对象不再被引用时,会自动回收其所占的内存。
三、类与对象的关系
- 现实世界中的实体通过抽象成为概念世界中的抽象数据类。
- 类是概念世界中抽象数据类的计算机逻辑的实现。
- 类是一组相同属性和方法的对象的抽象。
- 对象是现实世界中的映射。
- 对象是类的实例化。
对象的代码示例:
/// 定义一个车类
class Car{
// 定义属性
String? name;
String? color;
Car(this.name,this.color);
// 定义方法
void run(){
print('A $color $name is running');
}
}
void main() {
// 创建对象
Car mycar = Car('truck','red');
// 调用对象方法
mycar.run(); // 输出:A red truck is running
}
四、总结
本小节从汽车的例子出发首先介绍了类的定义及类的抽象性,然后介绍了对象的定义及特性,最后介绍了类与对象之间的关系。