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的用法区别是啥呢? 有点懵圈呀,让我在琢磨一下吧
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
python安装教程(较详细)