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 面向对象的理解和代码实现,开发过程中可以根据自己的需求使用这些特性。