专业的编程技术博客社区

网站首页 > 博客文章 正文

7-Flutter应用开发语言Dart语法类剖析

baijin 2024-08-23 10:39:11 博客文章 6 ℃ 0 评论

学习面向对象语法前,首先要理解类与对象的含义。类是对同一种事物(抽象或具象)的描述,它可以是现实世界的或思维产物,举个例子现实生活中,人会对相同特征的事物进行分类(特征像类中的成员变量和函数)比如水果,蔬菜等等这些就像计算语言中的类有点抽象,水果中苹果,桃具体事物相当于计算机中类对象。类的存在让项目架构更有条理,简洁,方便升级,版本兼容。Dart 是一种基于类和 mixin 继承机制的面向对象的语言,所有类的超类(根或父类)是object。 类在语法上类名被class修饰,类体还有成员变量,方法(也叫函数),格式如下。

class C{
 int i;//成员变量 参数类型也可以是其他的
 //方法
  void test(){
      print("test"); 
  }
  
  void setIndex
  C(int i){
    this.i=i;
  }
}  

对象是类的实例化(通过类这个模板在计算机中分配运行时存储空间),语法上通过关键字new创建实例化类对象,格式如下。

C c=new C();
var c=C();//Dart语言精简写法相当于上面

1类成员变量赋值,可通过构造函数,普通赋值函数对变量赋值,直接调用变量赋值(变量不是私有可以超过赋值)。实例如下几种

var c=C();//实例对象,另一种叫法创建对象
c.setVal(1);
v.getVal();
或者
var c1=new C(1);
c1.getVal();
或者
var c2=new C();
c2.val=2;
c2.getVal();

2类成员变量和函数访问,访问意思是执行代码获取或更改数据。示例如下

var c=C();
c.test();//函数调用
c.val=0;//成员变量更改

3抽象类定义,类名被abstract 修饰,不能被实例化,函数可以是抽象函数和非抽象函数。有时项目业务中公共父类函数不用具体实现那可以将父类定义为抽象类,子类重载抽象函数。实例如下:

//移动端请求封装
abstract class BaseReq{
  Map reqParam;
  set setReqParam( val)=> reqParam=val;
  Map get getReqParam=>  reqParam;

  void onSuccess(data){}
  void onFail(data){}
  void onProcess(data);
}

//子类
class LoginReq extends BaseReq{

  @override
  void onFail(data) }

  @override
  void onProcess(data) {
  
  }

  @override
  void onSuccess(data) {
    
  }

}

4接口定义dart中没有关键字来定义接口,接口可以是抽象类或普通类,使用implements来实现,一个类能实现多个接口。接口定义一般使用抽象类。实例如下:

//
abstract class BaseReq{
  Map reqParam;
  set setReqParam( val)=> reqParam=val;
  Map get getReqParam=>  reqParam;

  void onSuccess(data){}
  void onFail(data){}
  void onProcess(data);
}

5mixin中文意思混入,即类中加入其它功能,mixin 关键字在 Dart 2.1 中被引用支持,复用类代码,通过with 来引入多个或一个类来使用mixin,作为mixins的类不能有构造函数。示例如下

//移动端公共请求封装
abstract class BaseReq{
  Map reqParam;
  set setReqParam( val)=> reqParam=val;
  Map get getReqParam=>  reqParam;

  void onSuccess(data){}
  void onFail(data){}
  void onProcess(data);
}

//子类 
class LoginReq extends BaseReq    HttpUtils{
  @override
  void onFail(data) {}
  @override
  void onProcess(data) {
  }
  @override
  void onSuccess(data) {}
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表