Dart面向对象理解

44 阅读2分钟

Dart 是一门面向对象的编程语言,支持类、继承、多态等面向对象特性。以下是 Dart 面向对象的一些常见理解和代码实现:

1. 类和对象

在 Dart 中,可以使用 class 关键字定义类,使用 new 关键字创建对象。以下是一个示例代码,定义了一个名为 Person 的类,并创建了两个对象:

class Person {
  final String name;
  final int age;

  Person({required this.name, required this.age});
}

void main() {
  final person1 = Person(name: 'Alice', age: 25);
  final person2 = Person(name: 'Bob', age: 30);
  print(person1.name); // 输出 "Alice"
  print(person2.age); // 输出 30
}

在上述代码中,使用 class 定义了一个名为 Person 的类,具有 name 和 age 两个属性。在 main 函数中,使用 new 创建了两个 Person 对象,分别为 person1 和 person2。

2. 继承和多态

在 Dart 中,可以使用 extends 关键字实现类的继承,并使用 @override 注解重写父类方法实现多态。以下是一个示例代码,定义了一个名为 Student 的子类,并重写了父类的 toString 方法:

class Student extends Person {
  final String school;

  Student({required String name, required int age, required this.school})
      : super(name: name, age: age);

  @override
  String toString() {
    return '$name is a student at $school';
  }
}

void main() {
  final student = Student(name: 'Charlie', age: 20, school: 'Harvard');
  print(student.toString()); // 输出 "Charlie is a student at Harvard"
}

在上述代码中,使用 extends 关键字实现了 Student 子类继承自 Person 父类,并重写了父类的 toString 方法以实现多态。

3. 抽象类和接口

在 Dart 中,可以使用 abstract 关键字定义抽象类,抽象类不能被实例化,只能被子类继承。Dart 不支持显式的接口定义,但是通过抽象类和 implements 关键字可以实现类似接口的功能。以下是一个示例代码,定义了一个名为 Animal 的抽象类和一个名为 Flyable 的抽象类,以及一个名为 Bird 的子类实现了 Flyable 接口:

abstract class Animal {
  void eat();
}

abstract class Flyable {
  void fly();
}

class Bird extends Animal implements Flyable {
  @override
  void eat() {
    print('Bird is eating');
  }

  @override
  void fly() {
    print('Bird is flying');
  }
}

void main() {
  final bird = Bird();
  bird.eat(); // 输出 "Bird is eating"
  bird.fly(); // 输出 "Bird is flying"
}

在上述代码中,定义了一个名为 Animal 的抽象类和一个名为 Flyable 的抽象类,以及一个名为 Bird 的子类实现了 Flyable 接口。

以上是一些常见的 Dart 面向对象的理解和代码实现,开发过程中可以根据自己的需求使用这些特性。