Dart 语言 类的属性与方法

Dart阿木 发布于 2025-06-18 4 次阅读


Dart 语言中类的属性与方法深入解析

在 Dart 语言中,类是构建面向对象程序的基础。类不仅封装了数据,还封装了操作这些数据的代码。本文将深入探讨 Dart 中类的属性与方法,包括它们的定义、使用以及一些高级特性。

类的基本概念

在 Dart 中,类是一个用于创建对象的蓝图。每个对象都是类的实例,类定义了对象的状态(属性)和行为(方法)。

定义类

在 Dart 中,使用 `class` 关键字来定义一个类。以下是一个简单的类定义示例:

dart

class Person {


String name;


int age;

Person(this.name, this.age);


}


在这个例子中,`Person` 类有两个属性:`name` 和 `age`。构造函数 `Person` 用于初始化这些属性。

创建对象

一旦定义了类,就可以创建它的实例(对象):

dart

var person = Person('Alice', 30);


访问属性

可以通过点操作符来访问对象的属性:

dart

print(person.name); // 输出: Alice


print(person.age); // 输出: 30


设置属性

同样,可以使用点操作符来设置属性的值:

dart

person.age = 31;


print(person.age); // 输出: 31


类的方法

方法是与类关联的函数,用于执行特定的操作。在 Dart 中,方法也是通过类定义的。

定义方法

在 Dart 中,方法定义在类内部,使用 `void` 关键字来声明没有返回值的方法:

dart

class Person {


String name;


int age;

Person(this.name, this.age);

void sayHello() {


print('Hello, my name is $name.');


}


}


在这个例子中,`sayHello` 是一个没有返回值的方法,它打印出一个人的名字。

返回值

如果方法需要返回值,可以使用 `return` 语句:

dart

class Person {


String name;


int age;

Person(this.name, this.age);

String get fullName {


return '$name $age';


}


}


在这个例子中,`fullName` 是一个 getter 方法,它返回一个人的全名。

方法重载

Dart 支持方法重载,这意味着可以定义多个具有相同名称但参数列表不同的方法:

dart

class Calculator {


int add(int a, int b) {


return a + b;


}

int add(double a, double b) {


return a + b;


}


}


在这个例子中,`Calculator` 类有两个 `add` 方法,一个接受两个整数,另一个接受两个双精度浮点数。

类的高级特性

构造函数重载

Dart 允许在类中定义多个构造函数,这称为构造函数重载。这可以通过在类定义中添加多个构造函数来实现:

dart

class Person {


String name;


int age;

// 默认构造函数


Person();

// 带有参数的构造函数


Person.named(this.name, this.age);

// 命名构造函数


Person.fromMap(Map<String, dynamic> map) {


name = map['name'];


age = map['age'];


}


}


抽象类和接口

Dart 支持抽象类和接口的概念。抽象类不能被实例化,但可以用来定义其他类的接口。接口则类似于 Java 中的接口,用于定义一组方法,但不包含实现。

dart

abstract class Animal {


void eat();


}

class Dog extends Animal {


@override


void eat() {


print('Dog is eating.');


}


}


封装

在 Dart 中,可以通过访问修饰符来控制对类成员的访问。`public`(默认)表示公开访问,`private` 表示私有访问,只能在类内部访问,`protected` 表示受保护的访问,只能在类及其子类中访问。

dart

class Person {


String _name; // 私有属性

String get name => _name; // 公开访问器

void setName(String name) {


_name = name;


}


}


总结

在 Dart 语言中,类是构建面向对象程序的核心。通过定义属性和方法,我们可以创建具有特定行为和状态的对象。本文深入探讨了 Dart 中类的属性与方法,包括它们的定义、使用以及一些高级特性。掌握这些概念对于编写高效、可维护的 Dart 代码至关重要。