【Flutter】Dart 面向对象 ( 类定义 | 类的继承 | 私有变量 | 可选参数 | 默认参数 | 初始化列表 )

网友投稿 646 2022-05-30

文章目录

一、 dart 面向对象

二、 类定义

三、 类的继承

四、 私有变量

五、 可选参数与默认参数

六、 初始化列表

七、 完整代码示例

八、 相关资源

一、 Dart 面向对象

OOP 基本特点 :

封装 : 将现实中存在的事务封装成类 ;

继承 : 使用现有类的功能 , 无需重写现有类的变量及方法 , 只实现扩展内容 ;

多态 : 子类对象可以赋值给父类类型变量 ;

类中定义的内容 :

变量 : 静态变量 , 实例变量 ;

函数 : 构造函数 , 实例函数 , 静态函数 ;

构造函数 :

标准构造函数

初始化列表函数

工厂构造方法

抽象

抽象类

抽象方法

二、 类定义

使用 class 关键字 , 定义 Dart 类 , 所有的 Dart 类默认继承 Object 类 , 其中定义两个变量 , 定义一个标准的构造方法 , 构造方法中使用 this.name 表示自有参数 ;

// 标准构造方法, 下面的方法是常用的构造方法写法 Person(this.name, this.age);

1

2

重写 Object 父类方法 :

// 重写父类的方法 @override String toString() { return "$name : $age"; }

1

2

3

4

5

代码示例 :

// 定义 Dart 类 // 与 Java 语言类似, 所有的类默认继承 Object 类 class Person{ // 定义变量 String name; int age; // 标准构造方法, 下面的方法是常用的构造方法写法 Person(this.name, this.age); // 重写父类的方法 @override String toString() { return "$name : $age"; } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

三、 类的继承

使用 extends 关键字定义子类 , 注意如果父类有非空参数的构造函数, 子类必须实现相同参数的构造函数 ;

// 继承 class Student extends Person{ Student(String name, int age): super(name, age); }

1

【Flutter】Dart 面向对象 ( 类定义 | 类的继承 | 私有变量 | 可选参数 | 默认参数 | 初始化列表 )

2

3

4

四、 私有变量

以下划线开始的变量是私有变量 ;

// 私有变量, 以下划线开始的变量是私有变量 int _grade;

1

2

五、 可选参数与默认参数

可选参数 : 可选参数必须在构造函数参数列表中最后一个 , {this.school} 是可选参数 ;

默认参数 : 可选参数中如果用户不初始化该可选参数 , 那么为其指定一个默认值 , {this.city = “北京”} 指定了如果用户不初始化 city 变量, 那么为其初始化 “北京” 字符串值 ;

// 继承 class Student extends Person{ // 私有变量, 以下划线开始的变量是私有变量 int _grade; String school; String city; String address; // 如果父类有非空参数的构造函数, 子类必须实现相同参数的构造函数 // 如果该类有父类 , 那么先调用父类的构造方法 , 完成父类的初始化 // 然后才能完成自己的初始化 // this.school 指定自有参数 // {this.school} 是可选参数, 可选参数必须在构造函数参数列表中最后一个 // 默认参数 : 可选参数中如果用户不初始化该可选参数 , 那么为其指定一个默认值 // {this.city = "北京"} 指定了如果用户不初始化 city 变量, 那么为其初始化 "北京" 字符串值 Student(this._grade, String name, int age, {this.school, this.city = "北京"}) : super(name, age); }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

六、 初始化列表

初始化列表 : 冒号后面的内容就是初始化列表 , 父类构造器也是初始化列表 , 除了父类构造方法之外 , 还可以在子类构造方法体之前初始化示例变量 , 不同的初始化实例变量之间使用逗号隔开 ;

// 初始化列表 : 冒号后面的内容就是初始化列表 // 父类构造器也是初始化列表 // 除了父类构造方法之外 , 还可以在子类构造方法体之前初始化示例变量 // 不同的初始化实例变量之间使用逗号隔开 // 父类构造方法 : 如果父类没有默认构造方法 (无参构造方法) , // 必须在初始化列表中调用父类构造函数 , super(name, age) ; // 构造方法方法体 : 可以省略 ; Student(this._grade, String name, int age, {this.school, this.city = "北京"}) : address = "北京市海淀区" , super(name, age);

1

2

3

4

5

6

7

8

9

10

11

七、 完整代码示例

import 'package:flutter/material.dart'; class Dart_OOP extends StatefulWidget { @override _Dart_OOPState createState() => _Dart_OOPState(); } class _Dart_OOPState extends State { @override Widget build(BuildContext context) { return Container(child: Text('Dart 面向对象')); } } // 定义 Dart 类 // 与 Java 语言类似, 所有的类默认继承 Object 类 class Person{ // 定义变量 String name; int age; // 标准构造方法, 下面的方法是常用的构造方法写法 Person(this.name, this.age); // 重写父类的方法 @override String toString() { return "$name : $age"; } } // 继承 class Student extends Person{ // 私有变量, 以下划线开始的变量是私有变量 int _grade; String school; String city; String address; // 如果父类有非空参数的构造函数, 子类必须实现相同参数的构造函数 // 如果该类有父类 , 那么先调用父类的构造方法 , 完成父类的初始化 // 然后才能完成自己的初始化 // this.school 指定自有参数 // {this.school} 是可选参数, 可选参数必须在构造函数参数列表中最后一个 // 默认参数 : 可选参数中如果用户不初始化该可选参数 , 那么为其指定一个默认值 // {this.city = "北京"} 指定了如果用户不初始化 city 变量, 那么为其初始化 "北京" 字符串值 // 初始化列表 : 冒号后面的内容就是初始化列表 // 父类构造器也是初始化列表 // 除了父类构造方法之外 , 还可以在子类构造方法体之前初始化示例变量 // 不同的初始化实例变量之间使用逗号隔开 // 父类构造方法 : 如果父类没有默认构造方法 (无参构造方法) , // 必须在初始化列表中调用父类构造函数 , super(name, age) ; // 构造方法方法体 : 可以省略 ; Student(this._grade, String name, int age, {this.school, this.city = "北京"}) : address = "北京市海淀区" , super(name, age); }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

八、 相关资源

参考资料 :

flutter 官网 : https://flutter.dev/ ( 被墙 )

Flutter 开发文档 : https://flutter.cn/docs ( 强烈推荐 )

官方 GitHub 地址 : https://github.com/flutter

Flutter 中文社区 : https://flutter.cn/

Flutter 实用教程 : https://flutter.cn/docs/cookbook

Flutter CodeLab : https://codelabs.flutter-io.cn/

Dart 中文文档 : https://dart.cn/

Dart 开发者官网 : https://api.dart.dev/

Flutter 中文网 ( 非官方 , 翻译的很好 ) : https://flutterchina.club/ , http://flutter.axuer.com/docs/

Flutter 相关问题 : https://flutterchina.club/faq/ ( 入门阶段推荐看一遍 )

博客源码下载 :

GitHub 地址 : https://github.com/han1202012/flutter_app_hello ( 随博客进度一直更新 , 有可能没有本博客的源码 )

博客源码快照 : https://download.csdn.net/download/han1202012/15117222 ( 本篇博客的源码快照 , 可以找到本博客的源码 )

Flutter 面向对象编程

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:造个‘’轮子‘’!只要掌握了这几点,你也可以撸一个写在简历上的轮子(附手撸过程)
下一篇:Java应用之图片美化增强AI接口调用手册
相关文章