Dart面向对象理解
【摘要】 Dart 是一门面向对象的编程语言,支持类、继承、多态等面向对象特性。以下是 Dart 面向对象的一些常见理解和代码实现: 1. 类和对象在 Dart 中,可以使用 class 关键字定义类,使用 new 关键字创建对象。以下是一个示例代码,定义了一个名为 Person 的类,并创建了两个对象:class Person { final String name; final int age...
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 面向对象的理解和代码实现,开发过程中可以根据自己的需求使用这些特性。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)