01 Dart类中静态成员 静态方法
Dart中的静态成员:
- 使用static 关键字来实现类级别的变量和函数
- 静态方法不能访问非静态成员,非静态方法可以访问静态成员
/**
*
* Dart中的静态成员:
*
* 1.使用static 关键字来实现类级别的变量和函数
*
* 2.静态方法不能访问非静态成员,非静态方法可以访问静态成员
*
*/
class Person {
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(age);//静态方法没法访问非静态属性
//printInfo();//静态方法没法访问非静态方法
}
}
void main(){
// 1.使用static 关键字来实现类级别的变量和函数
print(Person.name);//张三
Person.show();//张三
//2.静态方法不能访问非静态成员,非静态方法可以访问静态成员
Person p=new Person();
p.printInfo();//张三 20 张三
print(Person.printUserInfo);//20 张三
}
02 Dart中的对象操作符
Dart中对象操作符:
? 条件运算符(了解)
as 类型转换
is 类型判断
.. 级联操作 (连缀)
/**
* Dart中对象操作符:
*
* ? 条件运算符(了解)
*
* as 类型转换
*
* is 类型判断
*
* .. 级联操作 (连缀)
*
*/
class Person{
String name="张三";
int age=23;
Person(this.age,this.name);
void getInfo(){
print("${this.name}----${this.age}");
}
}
void main(){
//? 条件运算符(了解)
// Person p;
// p?.getInfo();
//is 类型判断
Person p=new Person(20, "张三");
if (p is Person){
p.name="李四";
}
p.getInfo();//李四----20
print(p is Object);//true
//as 类型转换
var p1;
p1="";
p1=new Person(25, "老刘");
//p1.getInfo();老版本会直接报错
(p1 as Person).getInfo();//强制类型转换 老刘----25
//.. 级联操作 (连缀)
Person p2=new Person(25,"王五");
p2..name="小米"
..age=20
..getInfo();
//小米----20
}
03 Dart 类的继承( 简单继承)
面向对象的三大特性:封装 继承 多态
Dart中的类的继承
1.子类使用extends关键词来继承父类
2.子类会继承父类里面可见的属性和方法 但是不会继承构造函数
3.子类能复写父类的方法 getter和setter
/**
* 面向对象的三大特性:封装 继承 多态
*
* Dart中的类的继承
*
* 1.子类使用extends关键词来继承父类
* 2.子类会继承父类里面可见的属性和方法 但是不会继承构造函数
* 3.子类能复写父类的方法 getter和setter
*
*
*/
class Person{
String name="张三";
int age=23;
Person(this.name,this.age);
void getInfo(){
print("${this.name}----${this.age}");
}
}
class Web extends Person{
//实例化子类的时候给父类传参
Web(super.name, super.age);
//可以扩展属性和方法
run(){
print("${this.name}----${this.age}");
}
}
void main(){
Web b=new Web("张三",12);
b.getInfo();//张三----12
b.run();//张三----12
}
04 Dart类的继承super关键词的使用
class Person{
String name="张三";
int age=23;
Person(this.name,this.age);
void getInfo(){
print("${this.name}----${this.age}");
}
}
class Web extends Person{
//实例化子类的时候给父类传参
Web(super.name, super.age);
//可以扩展属性和方法
run(){
print("${this.name}----${this.age}");
}
}
void main(){
Web b=new Web("张三",12);
b.getInfo();//张三----12
b.run();//张三----12
}
05 类的继承 覆写父类的方法
class Person{
String name="张三";
int age=23;
Person(this.name,this.age);
void getInfo(){
print("${this.name}----${this.age}");
}
work(){
print("${this.name}在工作中...");
}
}
class Web extends Person{
//实例化子类的时候给父类传参
Web(super.name, super.age);
//可以扩展属性和方法
run(){
print("${this.name}----${this.age}");
super.work();//子类调用父类的方法,直接调用
}
//覆写父类的方法
@override //可以写可以不写,建议在覆写父类方法的时候加上 @override
void getInfo(){
print("姓名:${this.name}----年龄:${this.age}");
}
@override
work(){
print("${this.name}的工作是写代码...");
}
}
void main(){
Web web=new Web("张三",20);
web.getInfo();//姓名:张三----年龄:20
web.work();//张三的工作是写代码...
}