类
class Person { String name = 'lynn'; int age = 20; String getUserName(){ print('获取用户名称 --- $name'); return name; } void setUserAge(int age){ print('设置用户年龄 --- $age'); this.age = age; }}void main() { Person person = new Person(); // 可以直接访问 类的属性 print(person.name); person.getUserName(); // 调用类的方法 person.setUserAge(18); print(person.age);}
类的默认构造函数
// 默认构造函数 , 构造函数是在实例化类的时候,自动调用的。 // 注意 : 默认构造函数只有一个class Person { String sex = ''; // 构造函数 Person(String sex) { this.sex = sex; } // Person(String this.sex) 简写默认构造函数}void main() { Person person = new Person('男'); print(person.sex);}
类的命名构造函数
// 命名构造函数, 允许有多个class Person { String name = 'lynn'; Person.get(String this.name); // 命名构造函数}void main() { Person person = new Person.get('xing'); print(person.name);}
类的私有方法以及私有属性
// dart 中没有 public private protected 这些访问修饰符// 但是在 dart 中 我们可以是用 _ 把一个属性或者方法定义成私有的, 但是注意, 这个类必须抽离成单个dart 文件。// Person.dartclass Person { String name = 'lynn'; int _age = 20; Person.get(String this.name); // 因为 age 定义成私有属性, 所以无法通过实例访问, 但是可以定义一个方法 提供给外部使用 int getAge(){ return _age; } // 私有方法 String _getSex(){ return _sex; }}// index.dartimport 'lib/Person.dart';void main() { Person person = new Person.get('xing'); print(person.name); // print(person._age); // 无法访问私有属性 print(person.getAge()); // 通过公有方法 访问 私有属性 // print(person._getSex()); // 私有方法不可以调用}
类的 get and set 修饰符
// Person.dartclass Person { String name = 'lynn'; int _age = 20; String _sex = '男'; Person.get(String this.name); // get 修饰符 get getAge{ return _age; } // set 修饰符 set setSex(String val){ this._sex = val; }}// index.dartimport 'lib/Person.dart';void main() { Person person = new Person.get('xing'); print(person.getAge); print(person.setSex = '帅'); }
构造函数之前初始化实例变量
class Person { String name; int age; Person():name = 'lynn', age = 20; // 构造函数调用之前初始化属性值}
类的静态成员以及方法
// static 关键字表示该属性为 静态属性或者方法,静态的属性跟方法是不需要实例化就可以进行访问的。class Person { static String name = 'lynn'; static int age = 20;}// index.dartimport 'lib/Person.dart';void main() { print(Person.name); // 可以直接访问 print(Person.age);}// 注意: 静态方法以及属性 不需要实例化。class Person { static String name = 'lynn'; static int age = 20; static String sex = '男'; int money = 100000; // 注意 , 静态方法不允许访问 非静态的成员以及方法但是可以访问静态的方法以及成员, 相反 非静态的方法, 允许访问静态成员以及方法 static getSex(){ return sex; } setName(String name, int money){ name = name; // 注意, 静态成员不能够通过实例访问,也就是不需要使用 this ,而是直接使用即可。 this.money = money; // 非静态成员使用 this 访问 print('name: $name --------- money: ${this.money}'); }}
对象 ? 条件操作符
import 'lib/Person.dart';void main() { Person? person; person?.printUserInfo();}// Person.dartclass Person { String? name; int? age; Person(String name, int age); void printUserInfo(){ print('Person name: $name ------年龄: $age'); }}
对象 is 类型判断操作符
import 'lib/Person.dart';void main() { Person person = new Person('lynn', 20); // is 类型判断, 判断person 是否属于 Person 类 if(person is Person) { print('person is Person'); }}// Person.dartclass Person { String? name; int? age; Person(String this.name, int this.age); void printUserInfo(){ print('Person name: $name ------年龄: $age'); }}
对象 as 类型转换操作符
import 'lib/Person.dart';void main() { var cat; cat = ''; cat = new Person('lynn', 20); (cat as Person).printUserInfo(); // 把cat 变量的类型 转换成 Person, 在新版的dart 中, 可以不使用as也可以打印}
对象 .. 级联操作符
import 'lib/Person.dart';void main() { Person person = new Person('lynn', 20); // 级联操作符 person..name = 'xing' ..age = 28 ..printUserInfo();}