类
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.dart
class Person {
String name = 'lynn';
int _age = 20;
Person.get(String this.name);
// 因为 age 定义成私有属性, 所以无法通过实例访问, 但是可以定义一个方法 提供给外部使用
int getAge(){
return _age;
}
// 私有方法
String _getSex(){
return _sex;
}
}
// index.dart
import '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.dart
class 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.dart
import '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.dart
import '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.dart
class 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.dart
class 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();
}