Dart中的静态成员:
使用static关键字来实现静态变量和静态函数
静态方法不能访问非静态成员,非静态方法可以访问静态成员
静态属性和静态方法直接用类名来访问
void main(){
print(Person.age);
Person.printName();
//Dart中的对象操作符
// ?:条件运算符
// as:类型转换
// is:条件判断
// ..:级联操作
Person person;
//加一个问号,表示对象为null时,不调用方法
person?.printAge();
//类型转换
Person p = new Person();
(p as Person).printAge();
//is:条件判断
if(p is Person){
}
//..:级联操作
User user = new User("周建", 26);
user.name = "李四";
user.age = 30;
user.printUser();
//也可以这样写
user..name = "王五"
..age = 26
..printUser();
}
class User{
String name;
int age;
User(this.name,this.age);
void printUser(){
print("${this.name}:${this.age}");
}
}
class Person{
static int age = 26;
static String name = "zhoujian";
static void printName(){
print(name);
}
void printAge(){
print(age);
}
}
输出结果:
[Running] dart "/Users/zhoujian/DartDemo/tempCodeRunnerFile.dart"
26
zhoujian
26
李四:30
王五:26
[Done] exited with code=0 in 1.222 seconds
//Dart中的继承
// 子类继承父类,用extends关键字
// 子类会继承父类里面可见的属性和方法,不会继承构造函数
// 子类能复写父类的方法 getter 和setter
class Person {
String name;
int age;
Person(this.name, this.age);
void printPersonInfo() {
print("${this.name}:${this.age}");
}
@override
void doJob() {
print("上班");
}
}
class Worker extends Person {
String sex;
Worker(String name, int age, String sex) : super(name, age) {
this.sex = sex;
}
void printWorkerInfo() {
print("${this.name}:${this.age}:${this.sex}");
}
//子类复写父类的方法
void doJob() {
//子类调用父类方法
super.doJob();
print("在工厂上班");
}
}
void main() {
Worker worker = new Worker("张三", 18, "男");
//子类调用父类方法
worker.printPersonInfo();
//调用自己的方法
worker.printWorkerInfo();
worker.doJob();
}
输出结果:
[Running] dart "/Users/zhoujian/DartDemo/extenddemo.dart"
张三:18
张三:18:男
上班
在工厂上班
[Done] exited with code=0 in 1.097 seconds