Dart:二十、接口

接口

  • Dart 沒有接口

https://dart.dev/samples#interfaces-and-abstract-classes

接口方式使用

  • 定義人抽象類
abstract class IPerson {
  String name;
  int age;

  IPerson(this.name, this.age);

  String info() {
    return 'Name: $name, Age: $age';
  }
}

接口用途的抽象類 請用字母 I 開頭 , 如 IPhone

  • 老師
class Teacher implements IPerson {
  @override
  String name;

  @override
  int age;

  Teacher(this.name, this.age);

  @override
  String info() {
    return 'Teacher -> Name: $name, Age: $age';
  }
}
  • 學(xué)生
class Student implements IPerson {
  @override
  int age;

  @override
  String name;

  Student(this.name, this.age);

  @override
  String info() {
    return 'Student -> Name: $name, Age: $age';
  }
}
  • 打印信息
void makePersonInfo(IPerson user) => print(user.info());
  • 實例化
void main(List<String> args) {
  var t = Teacher('ducafecat', 99);
  makePersonInfo(t);

  var s = Student('hans', 66);
  makePersonInfo(s);
}

Teacher -> Name: ducafecat, Age: 99
Student -> Name: hans, Age: 66

履行多接口

  • 定義學(xué)校抽象類
abstract class ISchool {
  int grade;

  ISchool(this.grade);

  String schoolInfo() {
    return 'Grade: $grade';
  }
}
  • 學(xué)生 多繼承
class Student implements IPerson, ISchool {
  @override
  int age;

  @override
  String name;

  @override
  int grade;

  Student(this.name, this.age, this.grade);

  @override
  String info() {
    return 'Student -> Name: $name, Age: $age';
  }

  @override
  String schoolInfo() {
    return 'School -> Name: $name, Age: $age, Grade: $grade';
  }
}
  • 打印信息
void makePersonInfo(IPerson user) => print(user.info());
void makeSchoolInfo(ISchool user) => print(user.schoolInfo());
  • 實例化
void main(List<String> args) {
  var t = Teacher('ducafecat', 99);
  makePersonInfo(t);

  var s = Student('hans', 66, 5);
  makePersonInfo(s);
  makeSchoolInfo(s);
}

Teacher -> Name: ducafecat, Age: 99
Student -> Name: hans, Age: 66
School -> Name: hans, Age: 66, Grade: 5

從一個普通類履行接口

class Phone {
  void startup() {
    print('開機(jī)');
  }

  void shutdown() {
    print('關(guān)機(jī)');
  }
}

class AndroidPhone implements Phone {
  @override
  void startup() {
    print('AndroidPhone 開機(jī)');
  }

  @override
  void shutdown() {
    print('AndroidPhone 關(guān)機(jī)');
  }
}

void main() {
  var p = AndroidPhone();
  p.startup();
  p.shutdown();
}

Dart 可以從一個普通的類履行接口

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容