【Flutter】Dart 面向对象 ( 命名构造方法 | 工厂构造方法 | 命名工厂构造方法 )(一)

简介: 【Flutter】Dart 面向对象 ( 命名构造方法 | 工厂构造方法 | 命名工厂构造方法 )(一)

文章目录

一、 命名构造方法

二、 工厂构造方法

三、 命名工厂构造方法

四、 相关资源





一、 命名构造方法


命名构造方法 :


定义格式 : 类名.方法名()

Student.cover(Student student):super(student.name, student.age);


父类构造函数 : 如果父类没有默认构造函数, 子类必须调用父类的构造函数 ;

方法体 : 命名构造方法与普通构造函数一样 , 可以有方法体 , 也可以不写方法体 ;

// 命名构造方法也可以有方法体
  Student.init(Student student):super(student.name, student.age){
    print("命名构造方法 : name : ${student.name}, age : ${student.age}");
  }


代码示例 :


// 定义 Dart 类
// 与 Java 语言类似, 所有的类默认继承 Object 类
class Person{
  // 定义变量
  String name;
  int age;
  // 标准构造方法, 下面的方法是常用的构造方法写法
  Person(this.name, this.age);
  // 重写父类的方法
  @override
  String toString() {
    return "$name : $age";
  }
}
// 继承
class Student extends Person{
  // 命名构造方法
  // 定义格式 : 类名.方法名()
  // 父类构造函数 : 如果父类没有默认构造函数, 子类必须调用父类的构造函数
  Student.cover(Student student):super(student.name, student.age);
  // 命名构造方法也可以有方法体
  Student.init(Student student):super(student.name, student.age){
    print("命名构造方法 : name : ${student.name}, age : ${student.age}");
  }
}






二、 工厂构造方法


工厂构造方法就是 单例模式 , 工厂构造方法作用是返回之前已经创建的对象 , 之前创建对象时需要缓存下来 ;


工厂构造方法规则 : 在构造方法前添加 factory 关键字 ;



定义了工厂构造方法的类 :


// 使用工厂构造方法实现单例模式
// 工厂构造方法就是单例模式
// 工厂构造方法作用是返回之前已经创建的对象 , 之前创建对象时需要缓存下来 ;
class Student2{
  // 静态成员
  static Student2 instace;
  // 工厂构造方法
  factory Student2(){
    if(instace == null){
      // 调用命名构造方法创建 Student2 对象
      instace = Student2.init();
    }
    // 返回单例对象
    return instace;
  }
  // 命名构造方法
  Student2.init();
}


测试工厂构造方法 :


factoryConstructorDemo(){
    Student2 stu1 = Student2();
    print("stu1 创建完成 : ${stu1}");
    Student2 stu2 = Student2();
    print("stu2 创建完成 : ${stu2}");
    print("对比 stu1 与 stu2 : stu1 == stu2 : ${stu1 == stu2}");
  }


执行结果 :


I/flutter (32158): stu1 创建完成 : Instance of 'Student2'
I/flutter (32158): stu2 创建完成 : Instance of 'Student2'
I/flutter (32158): 对比 stu1 与 stu2 : stu1 == stu2 : true


目录
相关文章
|
2月前
|
Dart
如何在 Flutter 项目中使用 Dart 语言?
如何在 Flutter 项目中使用 Dart 语言?
127 58
|
18天前
|
Dart
flutter dart mixin 姿势
flutter dart mixin 姿势
|
1月前
|
Dart 开发者 Windows
flutter:dart的学习
本文介绍了Dart语言的下载方法及基本使用,包括在Windows系统上和VSCode中的安装步骤,并展示了如何运行Dart代码。此外,还详细说明了Dart的基础语法、构造函数、泛型以及库的使用方法。文中通过示例代码解释了闭包、运算符等概念,并介绍了Dart的新特性如非空断言操作符和延迟初始化变量。最后,提供了添加第三方库依赖的方法。
28 12
|
6月前
|
前端开发 C++ 容器
Flutter-完整开发实战详解(一、Dart-语言和-Flutter-基础)(1)
Flutter-完整开发实战详解(一、Dart-语言和-Flutter-基础)(1)
|
3月前
|
Dart 前端开发 JavaScript
Flutter&Dart-异步编程Future、Stream极速入门
Flutter&Dart-异步编程Future、Stream极速入门
72 4
Flutter&Dart-异步编程Future、Stream极速入门
|
3月前
|
Dart JavaScript 前端开发
Dart或Flutter中解决异常-type ‘int‘ is not a subtype of type ‘double‘
Dart或Flutter中解决异常-type ‘int‘ is not a subtype of type ‘double‘
128 4
|
3月前
|
Dart
Flutter笔记:手动配置VSCode中Dart代码自动格式化
Flutter笔记:手动配置VSCode中Dart代码自动格式化
444 5
|
3月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
296 4
|
4月前
|
JSON Dart 安全
Flutter Dart Macro 宏简化 JSON 序列化
今天我们将会体验 dart 语言新特性 macro 宏,来实现对 json 的序列化,用到的包是官方实验室写的 json 包。 本文将会一步步的带你实现这个功能,那我们开始吧。
Flutter Dart Macro 宏简化 JSON 序列化
|
3月前
|
Dart 安全 API
Android跨平台开发之Dart 3.5 与 Flutter 3.24:革新跨平台应用开发
【Dart 3.5 与 Flutter 3.24:革新跨平台应用开发】首发于公众号“AntDream”。本文深度解析 Dart 3.5 和 Flutter 3.24 的新特性,包括空安全强化、Web 与原生互操作性增强及 Flutter GPU API 等,展示了如何提升代码质量和用户体验。
63 1