1.类的属性和方法
class Person{
String name="张三"; //属性
int age; //属性
//方法
void printInfo(){
print("${this.name}");
}
}
main(List<String> args) {
Person p=new Person();
p.printInfo(); // 张三
}
2.类的构造函数
class Person{
String name;
int age;
//构造函数
Person(String name, int age){ // ==>这部分简写模式: Person(this.name,this.age);
this.name=name;
this.age=age;
}
void printInfo(){
print("${this.name} ${this.age}");
}
}
main(List<String> args) {
Person p=new Person("xxx",10);
p.printInfo(); // xxx 10
}
3.命名构造函数 类似 new DateTime.now()
class Person{
String name;
int age;
// 默认构造函数 只能一个
Person(String name, int age){
this.name=name;
this.age=age;
}
// 命名构造函数
Person.name(String name,[age=10]){
this.name=name;
this.age=age;
print("命名构造函数${name}");
}
// 命名构造函数可以多个
Person.age(){
print("命名构造函数年龄");
}
void printInfo(){
print("${this.name} ${this.age}");
}
}
main(List<String> args) {
Person p2 =new Person.name("1号");
p2.printInfo();
// 命名构造函数1号 1号 10
}
3.类的私有变量
p.dart 文件: 私有变量必须在单独文件中才有效
class Person{
String name;
int _age;
Person(String name, int age){
this.name=name;
this._age=age;
}
void printInfo(){
print("${this.name} ${this._age}");
}
}
index.dart 文件:
import 'p.dart';
main(List<String> args) {
Person p2 =new Person("1号",20);
p2.printInfo(); // 1号 20
print(p2._age); //会报错,私有属性访问不到,只能间接通过别的共有属性或者方法访问
}
//私有属性和私有方法就是在前面加个_,但是必须在单独文件中
4.类的get和set
p.dart 文件:
class Person{
String name;
int _age;
Person(String name, int age){
this.name=name;
this._age=age;
}
// get outName
get outName{
return "out ${this.name}";
}
// set outName
set outName(val){
this.name=val;
}
void printInfo(){
print("${this.name} ${this._age}");
}
}
index.dart 文件:
import 'p.dart';
main(List<String> args) {
Person p2 =new Person("1号",20);
p2.printInfo(); // 1号 20
p2.outName="set name";
print(p2.outName); // out set name
}
5.构造函数前初始化列表
p.dart 文件:
class Person{
String name;
int _age;
//构造函数前初始化 :后面
Person():name='默认name',_age=100{}
void printInfo(){
print("${this.name} ${this._age}");
}
}
index.dart 文件:
import 'p.dart';
main(List<String> args) {
Person p2 =new Person();
p2.printInfo(); // 默认name 100
}
6.静态属性和静态方法
p.dart 文件
class Person{
String name;
int _age;
//静态属性
static String msg="静态属性";
Person():name='默认name',_age=100{}
//非静态方法,既可以访问静态属性,非静态属性,还可以访问静态方法和非静态方法
void printInfo(){
print("${this.name} ${this._age} ${msg}");
printStatic(); //静态方法
}
//静态方法 不能访问非静态属性和方法 只能静态属性和方法
static void printStatic(){
print("${msg}");
}
}
index.dart文件:
import 'p.dart';
main(List<String> args) {
Person p2 =new Person();
p2.printInfo();
Person.printStatic(); // 实例访问静态方法
print(Person.msg); // 实例访问静态属性
}
7. 操作符
1. ? 是否存在,存在就执行
Person p2;
p2?.printInfo(); // 这句话是不会执行的
Person p2 =new Person();
p2?.printInfo(); // 这样才会执行
2. as 强制类型
p2 as Person
3. is 判断类型
if(p2 is Person){}
4. 连缀符
Person p =new Person();
p.name="张三";
p.printInfo();
用连缀符号表示:
p..name="张三"
..printInfo();