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的用法区别是啥呢?
有点懵圈呀,让我在琢磨一下吧

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值