dart 接口和抽象类
时间: 2023-09-22 21:08:35 浏览: 116
在 Dart 中,接口和抽象类都可以用来定义抽象类型,即没有实现的类。它们有一些相似之处,但也有一些不同之处。
接口和抽象类的相似之处:
- 都可以用来定义抽象类型。
- 都不能被实例化。
- 都可以被实现或继承。
接口和抽象类的不同之处:
- 接口只能定义方法,而抽象类既可以定义方法,也可以定义字段和构造函数。
- 类可以实现多个接口,但只能继承一个抽象类。
- 接口中的所有方法都是抽象的,而抽象类可以包含非抽象方法。
下面是一个简单的示例,展示了如何声明接口和抽象类:
```
// 定义一个接口
abstract class MyInterface {
void doSomething();
}
// 定义一个抽象类
abstract class MyAbstractClass {
void doSomething();
void doSomethingElse() {
// 非抽象方法
}
}
// 实现接口
class MyClass implements MyInterface {
@override
void doSomething() {
// 实现 MyInterface 的 doSomething 方法
}
}
// 继承抽象类
class MyChildClass extends MyAbstractClass {
@override
void doSomething() {
// 实现 MyAbstractClass 的 doSomething 方法
}
}
```
在上面的示例中,`MyInterface` 和 `MyAbstractClass` 都是抽象类型。`MyClass` 实现了 `MyInterface` 接口,`MyChildClass` 继承了 `MyAbstractClass` 抽象类并实现了 `doSomething` 方法。请注意,`MyAbstractClass` 中还包含一个非抽象方法 `doSomethingElse`。
阅读全文