标签:art 覆写 setter 构造 成员变量 多个 公有 混合 特性
这三种关系可以同时存在,但是有前后顺序:
extends -> mixins -> implements
extens在前,mixins在中间,implements最后;
dart中的继承规则:
栗子举起来:
class Person {
//公有变量
String name;
num age;
//私有变量
String _gender;
//类名构造函数
Person(this.name,this.age);
//公有的方法
void printInfo() {
print("${this.name}---${this.age}");
}
work(){
print("${this.name}在工作...");
}
}
class Web extends Person{
Web(String name, num age) : super(name, age);
run(){
print(‘run‘);
super.work(); //自类调用父类的方法
}
//覆写父类的方法
@override //可以写也可以不写 建议在覆写父类方法的时候加上 @override
void printInfo(){
print("姓名:${this.name}---年龄:${this.age}");
}
}
main(){
Web w =n ew Web(‘李四‘,20);
// w.printInfo();
w.run();
}
class Person{
String name;
num age;
Person(this.name,this.age);
printInfo(){
print(‘${this.name}----${this.age}‘);
}
void run(){
print("Person Run");
}
}
class A {
String info="this is A";
void printA(){
print("A");
}
void run(){
print("A Run");
}
}
class B {
void printB(){
print("B");
}
void run(){
print("B Run");
}
}
class C extends Person with B,A{
C(String name, num age) : super(name, age);
}
void main(){
var c = new C(‘张三‘,20);
c.printInfo();
// c.printB();
// print(c.info);
c.run();
}
Flutter是没有interface的,但是Flutter中的每个类都是一个隐式的接口,这个接口包含类里的所有成员变量,以及定义的方法。如果有一个类 A,你想让类B拥有A的API,但又不想拥有A里的实现,那么你就应该把A当做接口,类B implements 类A.
所以在Flutter中:class 就是 interface
/*
Dart中一个类实现多个接口:
*/
abstract class A{
String name;
printA();
}
abstract class B{
printB();
}
class C implements A,B{
@override
String name;
@override
printA() {
print(‘printA‘);
}
@override
printB() {
// TODO: implement printB
return null;
}
}
void main(){
C c=new C();
c.printA();
}
dart中extends、 implements、with的用法与区别
标签:art 覆写 setter 构造 成员变量 多个 公有 混合 特性
原文地址:https://www.cnblogs.com/webcabana/p/11872265.html