接口
- 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 可以從一個普通的類履行接口