一.静态成员和静态方法
class Person {
//1.在变量或者方法最前面增加static关键字就是静态方法或者静态属性了;
//2.静态方法和静态属性只能使用类才能进行调用,相当于OC中的加号方法.
static String name = '张三';
int age=20;
static void show() {
print(name);
}
void printInfo(){ /*非静态方法可以访问静态成员以及非静态成员*/
// print(name); //访问静态属性
// print(this.age); //访问非静态属性
show(); //调用静态方法
}
static void printUserInfo(){//静态方法
print(name); //静态属性
show(); //静态方法
//print(this.age); //静态方法没法访问非静态的属性
// this.printInfo(); //静态方法没法访问非静态的方法
// printInfo();
}
}
二.类的继承
Dart中的类的继承:
1、子类使用extends关键词来继承父类
2、子类会继承父类里面可见的属性和方法 但是不会继承构造函数
3、子类能复写父类的方法 getter和setter
//父类
class Person {
String name;
num age;
Person(this.name,this.age);//初始化方法
Person.xxx(this.name,this.age);//命名构造函数
void printInfo() {
print("${this.name}---${this.age}");
}
}
//子类
class Web extends Person{
String sex;
//因为子类继承父类的时候不能继承父类初始化方法,但是需要将子类初始化的值传给父类进行使用,便产生如下写法.
//Web(String name, num age,String sex)==>是子类的初始化方法;
//: super(name, age)==>父类的初始化变量方法, super表示父类的意思;
Web(String name, num age,String sex) : super(name, age){
this.sex=sex;
}//在调用子类初始化方法的时候,会将name和age自动传递给父类进行初始化.
run(){
print("${this.name}---${this.age}--${this.sex}");
}
}
三.重写父类方法
class Web extends Person{
//子类的初始化方法
Web(String name, num age) : super(name, age);
//子类自己的方法
run(){
print('run');
}
//覆写父类的方法
@override //可以写也可以不写 建议在覆写父类方法的时候加上 @override
void printInfo(){
print("姓名:${this.name}---年龄:${this.age}");
}
}