Dart中的静态成员
1、使用static 关键字来实现类级别的变量和函数
2、静态方法不能访问非静态成员,非静态方法可以访问静态成员
class Person{
static String name = "李四";
static void show (){
print(name);
}
}
void main(List<String> args) {
//非静态的属性、方法只能通过实例化类来访问
// var p = new Person();
// p.show();
print(Person.name);//李四
Person.show();//李四
}
示例二
class Person{
static String name = "李四";
int age = 23;
static void show (){
print(name);
}
//非静态方法可以访问静态以及非静态成员
void printInfo(){
print(name);//访问静态属性
print(this.age);//访问非静态属性
show();//调用静态方法
}
//静态方法
static void printUserInfo(){
print(name);//静态属性
show();//调用静态方法
//静态方法没法访问非静态的属性和非静态方法
// print(age);
// printInfo();
}
}
void main(List<String> args) {
Person p = new Person();
p.printInfo();
}
Dart中的对象操作符
1、? 条件运算符
2、as 类型转换
3、is 类型判断
4、.. 级联操作(连缀)
class Person {
String? name;
num? age;
Person(this.name, this.age);
void printInfo() {
print("${this.name}----${this.age}");
}
}
void main(List<String> args) {
Person p = new Person("name", 23);
//类型判断
if (p is Person) {
p.name = "张三";
}
p.printInfo();
//as 类型转换
var p1;
p1 = "";
p1 = new Person("AA", 25);
(p1 as Person).printInfo();
//..级联操作
Person p2 = new Person("BB", 34);
// p2.printInfo();
// p2.name = "CC";
// p2.age = 45;
// p2.printInfo();//CC----45
//可以简化为
p2..name = "CC"
..age = 45
..printInfo();//CC----45
}
Dart中的继承
1、子类使用extends关键词来继承父类
2、子类会继承父类里面可见的属性和方法,但是不会继承构造函数
3、子类能复写父类的方法
示例一
class Person {
String name = "AA";
num age =23;
void printInfo(){
print("${this.name}----${this.age}");
}
}
class Web extends Person {
}
void main(List<String> args) {
Web w = new Web();
print(w.name);//AA
w.printInfo();//AA----23
}
示例二
class Person {
String name;
num age;
Person(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){
this.sex = sex;
}
run(){
print("${this.name}----${this.age}---${this.sex}");
}
}
void main(List<String> args) {
Web w = new Web("AA", 34,"男");
w.printInfo();//AA----34
w.run();//AA----34---男
}
示例三:给命名构造函数传参
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.xxx(name, age){
this.sex = sex;
}
run(){
print("${this.name}----${this.age}---${this.sex}");
}
}
void main(List<String> args) {
Web w = new Web("AA", 34,"男");
w.printInfo();//AA----34
w.run();//AA----34---男
}
在子类中覆写父类的方法
class Person {
String name;
num age;
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");
}
//覆写父类的方法
@override//表示这个方法是覆写父类的方法,建议写上
void printInfo (){
print("姓名:${this.name}----年龄:${this.age}");
}
@override
work() {
print("${this.name}的工作是敲代码");
}
}
void main(List<String> args) {
Web w = new Web("AA", 23);
w.printInfo();//姓名:AA----年龄:23
w.work();//AA的工作是敲代码
}
记录Dart学习,一起学习呀!