7.4.抽离类为单独文件

新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中

class Person {
final String name;
final num age;
final String gender;
const Person(this.name, this.age, this.gender); }

引入这个Person类

import './person.dart';

void main() {
var p = new Person("xiaoqiang", 18, "男");
print(p.gender);
}

7.5.初始化列表

初始化列表就是在构造方法体执行之前进行一系列初始化操作,常用于设置final变量的值



void main() {
// 注意:new关键字可以省略
// var p = new Person("xiaoqiang", 12, "男");
// print(p.name);
// 创建对象的时候,可以使用fn构造方法
var p2 = new Person.fn("xiaohong", 12); } class Person {
String name;
num age;
final String gender;
Person(this.name, this.age, this.gender){ print(this.name);
print(this.age);
print(this.gender);
}
// 在构造方法后面加冒号来设置初始化列表,每个初始化变量之间用逗号隔开
Person.fn(name, age):gender="男", name="xiaoli"{
print(name);
print(age);
}
}

7.6.静态成员

可以使用static关键字来实现类级别的变量和函数,通俗的说静态成员就是可以直接通过类名称来调用

void main() {
print(Person.name);
Person.showName();
} class Person {
static String name;
static num age;
static void showName () {
name = "xiaoqiang";
print(name);
}
void showAge () {
// 非静态成员是可以直接使用静态成员
age = 10;
print(age);
} }

注意:静态成员不能访问非静态成员

void main() {
print(Person.name);
Person.showName();
var p = new Person();
p.showAge();
} class Person {
static String name;
static num age;
String gender = '男';
static void showName() {
name = "xiaoqiang";
print(name);
// 报错 静态方法不能访问非静态的属性
print(gender);
} void showAge() {
// 非静态成员是可以直接使用静态成员
age = 10;
print(age);
}
}

注意2: 定义静态常量 需要用 static const ,例如: static const gender = "男", 定义成常量后,在静态方法中可以访问

7.7.对象操作符

条件成员访问 ?.

void main() {
var p = new Person();
// 如果p为空就不执行showName方法 如果p不为空就会执行
p?.showName();
} class Person {
String name;
static num age;
showName() {
print(name);
}
}

is 和 is!

void main() {
var p = new Person();
if (p is Person) {
p.showName();
} else {
print("不属于这个类");
}
} class Person {
String name;
static num age;
showName() {
print(111);
print(name);
}
}

..级联操作

void main() {
new Person()
..name = "小强"
..age = 20
..showName();
} class Person {
String name;
num age;
showName() {
print(111);
print(name);
}
}

7.8.call方法

当类的内部定义call方法,那么对象可以作为方法调用

void main() {
var p = new Person();
p();
p.showName();
} class Person {
String name;
num age;
showName() {
print(111);
print(name);
} call() {
print('call 方法被执行了');
}
}

螺钉课堂视频课程地址:http://edu.nodeing.com

dart快速入门教程 (7.2)的更多相关文章

  1. dart快速入门教程 (8)

    9.dart中的库 9.1.自定义库 自定义库我们在前面已经使用过了,把某些功能抽取到一个文件,使用的时候通过import引入即可 9.2.系统内置库 以math库为例: import "d ...

  2. dart快速入门教程 (7.4)

    7.12.多态 多态字面上理解就是多种状态,通俗的说,多态表现为父类定义一个方法不去实现,子类继承这个方法后实现父类的方法,这个方法有多种表现 // import 'person.dart'; voi ...

  3. dart快速入门教程 (7.3)

    7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...

  4. dart快速入门教程 (7.1)

    7.面向对象 dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,所有的类都是Object的子类,换句话说就是万物皆对象 7.1.类与对象 void main() { // 注意:ne ...

  5. dart快速入门教程 (2)

    2.变量和数据类型 2.1.变量和常量 变量通俗的说就是可以变化的量,作用就是用来存储数据,你可以把一个变量看作是一个水果篮,里面可以装苹果.梨.香蕉等,常量就是一个固定的值,和变量是相对的,变量可以 ...

  6. dart快速入门教程 (1)

    1.环境搭建 1.1.dart简介 Dart 是一种 易于学习. 易于扩展.并且可以部署到 任何地方 的 应用 编程 语言.Google 使用 Dart 来开发 大型应用.flutter使用dart语 ...

  7. dart快速入门教程 (6)

    6.内置操作方法和属性 6.1.数字类型 1.isEven判断是否是偶数 int n = 10; print(n.isEven); // true 2.isOdd判断是否是奇数 int n = 101 ...

  8. dart快速入门教程 (5)

    5.函数 5.1.函数定义 语法: 返回值类型 函数名(参数类型 参数1, 参数类型 参数2,...) { // 函数体 return '返回值' } 举例: void main() { print( ...

  9. dart快速入门教程 (4)

    4.流程控制 4.1.分支结构 1.if语句 void main() { int score = 80; if (score >= 90) { print('优秀'); } else if (s ...

随机推荐

  1. Java面向对象中this关键字详解 意义+实例讲解【hot】

    this关键字 >>>便于理解简单的定义 this关键字可以简单的理解为,谁调用this所在的方法,this就是谁. 类的构造函数与getter.setter方法常用到this关键字 ...

  2. (Java实现) 洛谷 P1025 数的划分

    题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1. 问有多少种不同的分法. 输 ...

  3. Java实现LeetCode #986 - Interval List Intersections

    class Solution { public: vector<Interval> intervalIntersection(vector<Interval>& A, ...

  4. [RH134] 8-磁盘管理

    一.磁盘结构 我们以但磁盘的硬盘为例,如图所示: 从内向往有很多的磁道(这里我们只画了5条,实际上非常多),这个磁盘被划分为很多扇区.每个扇区有一个固定的大小,例如512Bytes. 对于多磁盘的硬盘 ...

  5. 移除VS解决方案中的TFS版本控制

    项目每次会弹出提示 正在打开的解决方案已绑定到以下 Azure DevOps Server 上的源代码管理: xxxxx.是否要联系此服务器以尝试启用源代码管理集成? 移除VS解决方案中的TFS版本控 ...

  6. 记录RecyclerView的位置并进行恢复

    //监听RecyclerView滚动状态 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Overri ...

  7. Spring Cloud 系列之 Alibaba Nacos 注册中心(一)

    前言 从本章节开始,我们学习 Spring Cloud Alibaba 相关微服务组件. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发 ...

  8. PAT 1039 Course List for Student (25分) 使用map<string, vector<int>>

    题目 Zhejiang University has 40000 students and provides 2500 courses. Now given the student name list ...

  9. EAS:基于网络转换的神经网络结构搜索 | AAAI 2018

    论文提出经济实惠且高效的神经网络结构搜索算法EAS,使用RL agent作为meta-controller,学习通过网络变换进行结构空间探索.从指定的网络开始,通过function-preservin ...

  10. xlwings--Python for Excel

    xlwings 中文文档 xlwings,让excel飞起来! xlwings 的使用教程