Android开发Dart Constructors构造函数使用技巧整理
什么是构造函数
在面向对象编程中,构造函数是类的一个特殊方法,用于创建该类的一个对象(实例)时调用。构造函数通常用于初始化类的成员变量。
在Dart中,构造函数的名称必须与类名相同。同时,Dart还支持命名构造函数,用于创建对象时使用不同的名称。
构造函数的使用技巧
默认构造函数
如果类没有定义构造函数,那么Dart会自动为该类生成一个默认构造函数。默认构造函数没有任何参数,并且什么也不做。
示例代码:
class Person {
String name;
// 默认构造函数
Person() {
print("默认构造函数");
}
}
void main() {
var person = new Person();
person.name = "张三";
print(person.name);
}
输出结果:
默认构造函数
张三
命名构造函数
命名构造函数是指除了默认构造函数以外的构造函数。在Dart中,命名构造函数使用下面的语法:
class ClassName {
// 命名构造函数
ClassName.identifier(parameter) {
// 构造函数的实现
}
}
示例代码:
class Person {
String name;
// 默认构造函数
Person() {
print("默认构造函数");
}
// 命名构造函数
Person.fromJson(Map<String, dynamic> json) {
name = json['name'];
}
}
void main() {
var person = new Person.fromJson({'name': '张三'});
print(person.name);
}
输出结果:
张三
初始化列表
初始化列表是一种用于设置 final 变量 或 调用 父类构造函数 的方式。Dart的初始化列表使用冒号(:)实现。
示例代码:
class Point {
final int x;
final int y;
// 默认构造函数
Point(this.x, this.y);
// 命名构造函数
Point.fromJson(Map<String, dynamic> json)
: x = json['x'],
y = json['y'];
}
void main() {
// 使用默认构造函数创建对象
var point1 = Point(1, 2);
print('${point1.x}, ${point1.y}');
// 使用命名构造函数创建对象
var point2 = Point.fromJson({'x': 3, 'y': 4});
print('${point2.x}, ${point2.y}');
}
输出结果:
1, 2
3, 4
工厂构造函数
工厂构造函数是一种特殊的构造函数,它不会直接创建对象,而是通过调用其它构造函数来创建对象。工厂构造函数通常用于实现单例模式或对象池。
示例代码:
class Logger {
final String name;
bool mute = false;
// 工厂构造函数
factory Logger(String name) {
return _loggers.putIfAbsent(name, () => Logger._internal(name));
}
Logger._internal(this.name);
static final Map<String, Logger> _loggers = {};
void log(String msg) {
if (!mute) print('$name: $msg');
}
}
void main() {
var logger1 = new Logger('main');
var logger2 = new Logger('test');
logger1.log('hello');
logger2.log('world');
}
输出结果:
main: hello
test: world
总结
了解 Dart 中的构造函数及其使用技巧,可以更好地实现面向对象编程,提高代码的质量和效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android开发Dart Constructors构造函数使用技巧整理 - Python技术站