Dart 之类与对象

127 阅读4分钟

Dart之类与对象.png

前言

在Dart中,类与对象是构建应用程序的基石。它们不仅是代码组织的核心,更是实现面向对象编程理念的关键。接下来,让我们一起深入探索Dart中的类与对象,揭开它们的神秘面纱。

一、类

是创建对象的蓝图或模版。

1.1、类的定义

类是创建对象的蓝图或模版。它定义了对象应该有的属性和方法,但其并不是具体存在的。 关于类的定义似乎有点晦涩难懂,我们通过一个例子来理解一下:

汽车图.png 如同上图中的汽车结构图,它定义了每辆汽车(对象)都应该有的轮子、车门等属性,还定义了汽车加速、减速等方法,但其并不是具体存在的。

1.2、类的抽象性

类是在对象之上的抽象,是一个抽象的概念,描述了一组具有相同属性与方法的对象。

实现类: 将一组具有相同属性与方法的对象抽象为一个类。

1.3、类的分类

  • 实体类:实体类的对象表示为现实世界中的实体,如车,人等。
  • 接口类:接口类的对象为用户提供一种与系统合作交互的方式。分为人和系统两类。
  • 控制类:控制类的对象用来控制活动流,充当协调者。

类的代码示例:

class Car{
    // 属性
    String color;
    String size;
    // 方法
    void start(){
        print('start');
    }
}

二、对象

对象是连接现实世界与数字世界的桥梁。

2.1、对象的定义

对象是数据(属性或状态)和作用于数据的操作(行为或方法)的封装体(一种信息隐蔽化技术,用于将生产者与使用者分离,将对象的定义与实现分离)。用于描述客观事物的一个实体。

汽车类图.png 理解:对象如同上图中的各种颜色的小汽车,他们分别具有自己的属性(颜色、品牌等)与行为(加速、减速等行为),他们是上图中汽车类的一种,也就是说他们是车类的一种实例。而车类是各种各样汽车对象的抽象,将各种各样汽车具有的相同属性或方法进行抽象为一个车类。

2.2、对象的特性

  • 属性: 对象的静态特征,描述了对象的状态或存储对象的数据。可以是基本数据类型或复杂数据类型。
  • 例如:车的颜色、大小、轮子等属性
  • 方法: 对象的动态特征,定义了对象具有的操作或行为。通常用于改变对象的属性或执行与对象相关的计算。
  • 例如:车的加速、减速等行为。
  • 标识: 每个对象具有唯一的标识,尽管对象之间具有相同的属性与方法,他们仍然是不同的实体。通常是通过内存地址或唯一ID来实现。

2.3、对象的生命周期

  1. 声明:声明一个对象引用,并未创建实际的对象。
  2. 创建:使用 new 关键字或其他方式创建对象,并分配内存
  3. 初始化:通过构造函数设置对象的初始状态。
  4. 使用:访问对象的属性或调用方法
  5. 销毁:对象不再被引用时,会自动回收其所占的内存。

三、类与对象的关系

类与对象对比图.png

  • 现实世界中的实体通过抽象成为概念世界中的抽象数据类。
  • 类是概念世界中抽象数据类的计算机逻辑的实现。
  • 类是一组相同属性和方法的对象的抽象。
  • 对象是现实世界中的映射。
  • 对象是类的实例化。

对象的代码示例:

/// 定义一个车类
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
}

四、总结

本小节从汽车的例子出发首先介绍了类的定义及类的抽象性,然后介绍了对象的定义及特性,最后介绍了类与对象之间的关系。