📜  Dart继承的概念(1)

📅  最后修改于: 2023-12-03 14:40:37.186000             🧑  作者: Mango

Dart继承的概念

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类使用了WalkerMixinRunnerMixin类的方法,但是并没有继承它们的属性。