开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
前言
很多Androider都在用FlutterUI框架,这个框架用的是Dart语言,会导致有一点点的入门门槛。但其实不然,Dart语言很大程度上跟Java很像,可以说是Java系的语言。但又很像JavaScript,像是一种弱类型语言。但实际上Dart是一种强类型语言,但支持了类型推断,就像C++20一样。
Dart语言是一种OOP(Object Oriented Programming)语言。因此就跟C++等语言一样,都有那显著的三个特征,封装、继承、多态。
在这篇文章中,我们主要学习与理解Dart中类的构造方法与Java的异同。以加速我们对Dart的理解。
话不多说,我们先来看看Dart类的基本构造方法。
构造函数
1.默认构造
Dart可以像Java一样。不显示声明构造函数,直接把类的成员变量和成员函数写好即可。系统会自己默认构造一个不带参数的默认构造函数。你像如下这样写:
class People {
// 成员变量
String name = '张三';
int age = 18;
// 成员方法
getInfo(){
print('name=${this.name}------age=${this.age}');
}
}
}
而后,系统实际上会给你增加成下述这样:
class People {
String name='张三';
int age=20;
//默认构造函数
Person();
// 成员方法
getInfo(){
print('name=${this.name}------age=${this.age}');
}
}
而构造方法的形参表传值之类的,则跟Java、C++的无差别,这里不再介绍。
2.命名构造函数
这个方法是Dart特有的,跟Java、C++等不太一样。这种方法可能可以使我们构造一个类的时候更清晰其意图。
这个我们应该也不陌生。在Flutter获取当前时间的时候我们会经常用到下面这段代码
DateTime d=new DateTime.now();
这实际上就是使用了DateTime这个类的命名构造函数。具体怎么用呢?即如下所示:
class People {
late String name;
late int age;
//默认构造函数的简写
People(this.name, this.age);
People.one(String name, int age) {
this.name = name;
this.age = age;
}
// 成员方法
getInfo(){
print('name=${this.name}------age=${this.age}');
}
}
3. 匿名构造方法(特殊)
class People {
People._();
}
这个方法用得不多,一般是配合单例模型使用的。声明了这个了以后,则外部不能再使用类名加括号如People()这种形式构造类的对象了。
再多说一嘴,在使用单例的时候,可以如下使用
class People {
People._();
static final People _instance = People._();
factory People() => _instance;
}
这样,无论在外部怎么调用People(),返回的都是同一个People实例。