Flutter - Dart的interface

这里看原文。ide

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

正文

  • 接口(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 //,...

例如get

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:io

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
相关文章
相关标签/搜索