Flutter - Dart的interface

小红星闪啊闪

这里看原文。

看这些教程的时候最好是打开dartpad。直接在里面把这些代码输入进去看结果。这是dart官方提供的一个练习dart的地方。边看边练事半功倍。

正文

  • 接口(interface)定义了每个实现这个接口的类都需要遵守的“规则”。
  • 当一个类实现(implements)一个接口的手,它必须override接口里的每一个方法和实例变量。
  • 然而,Dart不支持声明一个接口的语法。这些类声明本身就是接口声明。
  • 任何的类都可以当做接口。要实现这个“接口”只要用implements关键字就可以。
  • 一旦一个类被用作接口,就必须要override所有的实例方法和实例成员。简单来说就是实现类要重新定义所有的实例方法和实例成员。

声明“接口”的语法

class interface_nasme {
    //...
}

class class_name implements interface_name {
    //...
}

例如

class Person {
  
  void walk() {
    print("Person can walk");
  }

  void talk() {
    print("Person can talk");
  }
}
class Jay implements Person {
  
  @override
  void walk() {
    print("Jay can walk");
  }

  @override
  void talk() {
    print("Jay can talk");
  }
}

main() {
  Person person = new Person();
  Jay jay = new Jay();

  person.walk();
  person.talk();

  jay.walk();
  jay.talk();
}

输出:

Person can walk
Person can talk
Jay can walk
Jay can talk

实现多个接口

Dart不支持多继承,但是可以实现多个接口。

class class_name implements intgerface1, interface2 //,...

例如

class Person {
  String name;

  void ShowName() {
    print("My name is $name");
  }

  void walk() {
    print("Person can walk");
  }

  void talk() {
    print("Person can talk");
  }
}

class Viveki {
  String profession;

  void ShowProfession() {
    print("from class Viveki my profession is $profession");
  }
}

class Jay implements Person, Viveki {
  @override
  String profession;

  @override
  void ShowProfession() {
    print("from class Jay my Profession is $profession");
  }
  
  @override 
  String name; 
 
  @override 
  void ShowName() { 
    print("From class Jay my name is $name"); 
  } 
 
  @override 
  void walk() { 
    print("Jay can walk"); 
  } 
 
  @override 
  void talk() { 
    print("Jay can talk"); 
  } 
} 
 
main() { 
  Person person = new Person(); 
  Jay jay = new Jay(); 
  Viveki viveki = new Viveki(); 
 
  person.walk(); 
  person.talk(); 
  person.name = "Person"; 
  person.ShowName(); 
 
  print(""); 
 
  jay.walk(); 
  jay.talk(); 
  jay.name = "JAY"; 
  jay.profession = "Software Development"; 
  jay.ShowProfession(); 
  jay.ShowName(); 
 
  print(""); 
 
  viveki.profession = "Chemical Engineer"; 
  viveki.ShowProfession(); 
}

output:

Output
Person can walk
Person can talk
My name is Person

Jay can walk
Jay can talk
from class Jay my Profession is Software Development
From class Jay my name is JAY

from class Viveki my profession is Chemical Engineer
阅读 2.7k

full stack dev stills
back-end: Nodejs front-end: iOS, Android, Js

时不我待

892 声望
1.9k 粉丝
0 条评论

时不我待

892 声望
1.9k 粉丝
文章目录
宣传栏