Dart学习笔录 类

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();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值