📅  最后修改于: 2023-12-03 14:40:37.186000             🧑  作者: Mango
Dart是一种面向对象的编程语言,因此也支持继承。继承是一种面向对象的编程技术,可以让一个类继承另一个类的属性和方法。
在Dart中,一个类可以继承另一个类,继承的类被称为超类(或者父类),继承它的类被称为子类(或者派生类)。子类可以使用超类的属性和方法,也可以添加自己的属性和方法。
要继承一个类,可以通过在类定义前面使用extends
关键字来指定超类的名称,例如:
class Animal {
void eat() {
print('Animal is eating');
}
}
class Dog extends Animal {
void bark() {
print('Dog is barking');
}
}
在上面的例子中,Dog
类继承了Animal
类,并且添加了自己的bark
方法。
在子类中,可以使用super
关键字来调用超类的方法。例如,在Dog
类中,可以通过调用super.eat()
来调用Animal
类的eat
方法,例如:
class Dog extends Animal {
void bark() {
print('Dog is barking');
}
@override
void eat() {
super.eat();
print('Dog is eating');
}
}
在上面的例子中,eat
方法覆盖了超类的同名方法,并调用了超类的eat
方法。
Dart不支持多重继承,即一个类只能继承一个超类。但是,可以通过使用混入(mixin)来实现类似于多重继承的功能。混入是一种使一个类可以使用另一个类的方法的技术,而不需要继承它的属性或者创建一个子类。
要使用混入,可以使用with
关键字来指定混入的类,例如:
class WalkerMixin {
void walk() {
print('Walking');
}
}
class RunnerMixin {
void run() {
print('Running');
}
}
class Person with WalkerMixin, RunnerMixin {
void talk() {
print('Talking');
}
}
void main() {
var person = Person();
person.walk(); // -> Walking
person.run(); // -> Running
person.talk(); // -> Talking
}
在上面的例子中,Person
类使用了WalkerMixin
和RunnerMixin
类的方法,但是并没有继承它们的属性。