Dart 语法(二)

2021-10-23  本文已影响0人  木扬音

类和对象

void main() {
  LGPerson person = LGPerson();
  person.name = 'flutter';
  person.run();
}

class LGPerson{
  final String city = '长沙';
  String? name;
  int? age;

  void run() {
    print('name:$name age:$age');
  }
}

构造函数

void main() {
  // LGPerson person = LGPerson();
  LGPerson person = LGPerson(18,180,'flutter');
  LGPerson person1 = LGPerson.whitName('oc',180);

}

class LGPerson{
  String _name = 'swift';
  int? age;
  final height;

  LGPerson(this.age, this.height,this._name);
  //命名构造函数
  LGPerson.whitName(this._name,this.height);

  void run() {
    print('name:$name age:$age');
  }
}

单例对象

class FactoryClass {
  static FactoryClass? _instace;

  // factory FactoryClass(){
  //   if(_instace == null){
  //     _instace = FactoryClass._init();
  //   }
  //   return _instace!;
  // }

  // factory FactoryClass(){
  //   _instace ??= FactoryClass._init();
  //   return _instace!;
  // }

  // factory FactoryClass(){
  //   return  _instace ??= FactoryClass._init();
  // }

  factory FactoryClass() => _instace ??= FactoryClass._init();

  //私有构造函数
  FactoryClass._init();
}

初始化列表

class Person {
  String name;
  int age;
  final height;

  Person(this.name,this.age,int h)
      : height = h, 
      assert(h > 0),
      assert(age > 0){
      print('h > 0 && age > 0');
  }
}

类方法

void main(){
  Person.age = 10;
  Person.sum(20);
};

class Person {
  //静态属性
  static int age = 1;
  int currentCount = 0;
  //静态方法
  static int sum(int a){
    return a + age;
  }

  //实例方法
  int sum2(int a){
    return a + currentCount + age;
  }
}

对象操作符

void main(){
  //动态类型
  var p1 = Object();
  p1 = Person();
  //强制转化类型
  (p1 as Person).sum2(10);
 
  if(p1 is Person){
    
  }
}

class Person {
  int currentCount = 0;

  int sum2(int a){
    return a + currentCount;
  }
}

继承

void main(){
  Tearch t1 = Tearch();
  t1.currentCount = 10;
  t1.name = 'swift';
  t1.sum2(20);
}

class Person {
  int currentCount = 0;
  String? name;

  int sum2(int a){
    return a + currentCount;
  }
  Person(){
    print('Person -- Person');
  }
  Person.init();
}

class Tearch extends Person{
  Tearch.init() : super.init();
  
  int? age;

  //重写父类
  @override
  set name(String? _name) {
    // TODO: implement name
    super.name = _name;
  }
}

抽象类

abstract class Person1 {
  int sum1(int a);
}

abstract class Person2 {
  int sum2(int a);
}

abstract class Person3 {
  String? name;
}

//多实现抽象类
class Tearch implements Person1,Person2,Person3{

  @override
  int sum1(int a) {
    // TODO: implement sum1
    throw UnimplementedError();
  }

  @override
  int sum2(int a) {
    // TODO: implement sum2
    throw UnimplementedError();
  }

  @override
  set name(String? _name) {
    // TODO: implement name
  }

}

//单继承抽象类
abstract class Person10 {
  int sum10(int a);
  String? age;
}

class Student extends Person10 {
  @override
  int sum10(int a) {
    // TODO: implement sum10
    throw UnimplementedError();
  }

  @override
  set age(String? _age) {
    // TODO: implement age
    super.age = _age;
  }
}

Mixins混入

class Person1 {
  int sum1(int a);
}

class Person2 {
  int sum2(int a);
}

class Person3 {
  String? name;
}

//Mixins混入
class Tearch extends Person1 with Person2,Person3{


}

重载操作符operator

void main(){
  Student s1 = Student(20);
  Student s2 = Student(30);

  print(s1 > s2);
}

class Student {
  int age;

  Student(this.age);

  bool operator > (Student other) => this.age > other.age;
}

上一篇 下一篇

猜你喜欢

热点阅读