flutter学习dart笔记(三)

1、 类的setter 和 getter

格式 类型 get 变量名 => 值; set 同变量名函数名(类型 新值变量名)=> 新值(此处可连带其他属性赋值逻辑)

代码

class Rectangle {
  num left,top,width,height;//此时 四个变量

  Rectangle(this.left,this.top,this.width,this.height);//构造函数

  // 定义两个计算属性值 区别   num right=0;
  num get right=> left+width;
  set right(num value)=> left = value-width;

  num get bottom=> top+height;
  set bottom(num value)=>top=value-height;


}

void main(List<String> args) {
  var rect = Rectangle(2, 3, 4, 5);
  print(rect.left);
  rect.right=12;
  print(rect.left);
}

上述代码。貌似掺合了业务逻辑,对于代码提取相关知识点,我换个新的示例

class Person{
  String name,home;

  Person(this.name,this.home);

  num _age = 0;
  num get age=> _age;
  set age(num value)=>_age=value;
}


void main(List<String> args) {

  var p = Person(name Li, home beijing);
  p._age = 5;

  print(person: ${p.name} ,居住${p.home},年${p.age});
  p.age = 20;
  print(person: ${p.name} ,居住${p.home},年${p.age});
 
}

然后总结setter 和 getter 方法: type _name; type get name=> _name; set name(type value)=>_name=value;


2、抽象方法和抽象类

关键字 abstract 使用关键字abstract 修饰的类,为抽象类; 类中,为实现方法,只有方法名的方法,称为抽象方法

示例

abstract class Animal{//抽象类
  void printMyName();//抽象方法
}

class Dog extends Animal{

  @override
  void printMyName() {//抽象方法实现
    // TODO: implement printMyName
    print(object: Dog);
  }

}

3、隐式接口

这个我的个人理解就是 dart 语言设计时,没有关键字interface,但是有implements,(每个类都隐士的定义了一个接口,不需要interface) 一个类可以通过implements 关键字实现一个或者多个接口,并实现每个接口要求的API。 这里需要注意,构造函数不包含在接口里

class Student{
  final _name;//包含在接口里,但只有当前库可见

  Student(this._name);//不包含在接口里,因为这是构造函数

  String greet(String who)=>Hello,$who .I am $_name;//包含在接口中
}

class CollegeStudent implements Student{
  get _name =>;

  String greet(String who)=>Hi $who,Do you know who I am?;

}

调用:

String greetBob(Student student) => student.greet(Bob);
 
  print(greetBob(Student(Lucy)));
  print(greetBob(CollegeStudent()));


4、扩展类(继承)

关键字 extends;super 引用父类

5、重写关键字 @override

6、重写运算符(了解一下即可)

重写== 和 hashCode

7、noSuchMethod()

处理不存在的方法活实例变量

8、Mixin 复用类代码的一种途径

关键字 with

9、static 修饰类、变量、方法

10、enum 枚举

以上再次复习了一下dart关于类的用法,此处疑问: dart语言设计 extends 和 Mixin ,implements的用法区别是啥呢? 有点懵圈呀,让我在琢磨一下吧

经验分享 程序员 微信小程序 职场和发展