📜  Dart的接口(1)

📅  最后修改于: 2023-12-03 15:00:20.586000             🧑  作者: Mango

Dart的接口

在Dart编程中,接口是一种抽象的定义行为的方式。它们是实现中的一部分,定义了不同类之间的公共行为。

接口基础

在Dart中,可以使用interface关键字定义接口。接口中可以定义属性和方法,但不能有任何实现。

例如:

interface Animal {
  void makeNoise();
  int get legs;
}

在这个例子中,我们定义了一个名为Animal的接口,它有一个makeNoise和一个legs属性。这是一个非常基本的接口定义,接口中只包含了一些必须实现的方法和属性。

由于接口不会有任何实现,所以我们需要实现接口中定义的方法和属性。下面是一个简单的例子,演示如何实现这个接口:

class Dog implements Animal {
  void makeNoise() {
    print("WOOF!!");
  }

  int get legs => 4;
}

在这个例子中,我们定义了一个Dog类,它实现了Animal接口。注意,我们需要实现makeNoise方法和legs属性,因为它们在接口中都被定义了。

接口特性

接口的一个主要特点是,它们可以被类实现。但在Dart中,接口还有一些非常有用的特性。下面是几个接口特性的例子:

接口继承

在Dart中,接口可以扩展其他接口。扩展接口将继承所有父接口的属性和方法,并可以添加自己的方法和属性。

以下是一个扩展接口的例子:

interface Mammal {
  void nurseYoung();
}

interface Animal extends Mammal {
  void makeNoise();
  int get legs;
}

在这个例子中,我们扩展了Animal接口,使它继承了Mammal接口。现在,所有实现Animal接口的类也需要实现Mammal接口中定义的方法。

接口实现多个

在Dart中,一个类可以实现多个接口。这使得类可以具有许多不同的行为。

以下是一个实现多个接口的例子:

interface Swim {
  void swim();
}

interface Fly {
  void fly();
}

class Duck implements Swim, Fly {
  void swim() {
    print("Duck is swimming");
  }

  void fly() {
    print("Duck is flying");
  }
}

上面的代码中,我们定义了两个接口SwimFly。然后,我们定义了一个名为Duck的类,它实现了这两个接口。由于我们没有使用任何的继承,所以我们需要实现SwimFly中定义的所有方法和属性。

接口实现及默认实现

在Dart中,接口可以为所有实现它的类提供默认实现。这可以通过在接口中定义一个带有默认实现的方法来完成。

下面是一个使用默认实现的接口的例子:

interface Dance {
  void dance() {
    print("Dancing is fun");
  }
}

class Person implements Dance {
  // no need to implement dance method
}

在这个例子中,我们定义了一个名为Dance的接口,它有一个默认实现的dance方法。然后我们定义了一个Person类,它实现了Dance接口。但由于接口提供了一个默认实现,所以我们不需要实现dance方法。

总结

Dart中的接口是定义行为的一种方式。通过接口,可以使代码更加模块化和可复用。Dart中的接口可以扩展其他接口、实现多个接口,以及为所有实现它的类提供默认实现。