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实现 LeetCode 481 神奇字符串

    481. 神奇字符串 神奇的字符串 S 只包含 '1' 和 '2',并遵守以下规则: 字符串 S 是神奇的,因为串联字符 '1' 和 '2' 的连续出现次数会生成字符串 S 本身. 字符串 S 的前几 ...

  2. Java实现 蓝桥杯VIP 算法训练 s01串

    题目描述 s01串初始为" 0" 按以下方式变换 0变1,1变01 数据规模和约定 0~19 输入 1个整数(0~19) 输出 n次变换后s01串 样例输入 3 样例输出 101 ...

  3. Java实现 LeetCode 223 矩形面积

    223. 矩形面积 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. Rectangle Area 示例: 输入: -3, 0, 3, 4 ...

  4. java实现南北朝时

    南北朝时,我国数学家祖冲之首先把圆周率值计算到小数点后六位,比欧洲早了 1100 年! 他采用的是称为"割圆法"的算法,实际上已经蕴含着现代微积分的思想. 如图[1.jpg]所示, ...

  5. Java实现第八届蓝桥杯字母组串

    字母组串 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","AA ...

  6. lambda表达式操作DataTable

    using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text; ...

  7. 重学 Java 设计模式:实战桥接模式(多支付渠道「微信、支付宝」与多支付模式「刷脸、指纹」场景)

    作者:小傅哥 博客:https://bugstack.cn - 编写系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么你的代码那么多ifelse 同类的业务.同样的功能, ...

  8. Spring事务的传播属性

    前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为.事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为.这是Spring ...

  9. OO学习最终总结

    0.前言:本次主要是针对第三阶段的三次作业以及整个课程学习的总结,这三次作业主要是针对对程序进行重构使得程序可以对功能进行扩展的训练以及对类的设计,所以在此阐述在练习过程中的问题以及感悟. 1.作业总 ...

  10. Linux创建与删除

    一.创建文件夹.文本.用户.组 mkdir 创建文件夹 touch 创建文本 useradd 创建用户 例1:创建一个文件夹xiaomi 创建文件夹:mkdir xiaomi 例2:创建一个文件如ad ...