7.面向对象

dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,所有的类都是Object的子类,换句话说就是万物皆对象

7.1.类与对象

void main() {
// 注意:new关键字可以省略
var p = new Person();
p.name = "xiaoqiang";
p.showName();
p.showAge();
} class Person {
String name;
int age;
void showName(){
print("名字是:${name}");
}
void showAge () {
print("年龄是:${age}");
}
}

注意1:可以使用final来创建一个只读的属性

void main() {
// 注意:new关键字可以省略
var p = new Person();
p.name = "xiaoqiang";
p.showName();
p.showAge();
p.gender = "女"; // 报错, gender定义的时候是不能修改的
} class Person {
String name;
int age;
final String gender="男";
void showName(){
print("名字是:${name}");
}
void showAge () {
print("年龄是:${age}");
}
}

注意2: 方法不能被重载

class Person {
String name;
int age;
final String gender="男";
void showName(){
print("名字是:${name}");
}
void showAge () {
print("年龄是:${age}");
}
void showName () { // 报错
print("名字是:${name}");
}
}

7.2.计算属性

计算属性从字面上可以理解为值是通过计算得来的

import 'dart:math';

void main() {
// 注意:new关键字可以省略
var p = new RrightTriangle();
// p.a = 3;
// p.b = 4;
// print(p.c);
p.c = 5;
print(p.a); } class RrightTriangle {
num a, b;
num get c {
return sqrt(a*a + b*b);
}
set c(value) {
a = sqrt(pow(value, 2) - 16);
}
}

7.3.构造方法

构造方法就是我们创建对象时调用的方法,如果没有自定义构造方法,则会调用默认的构造方法, 如果存在自定义的构造方法,则默认方法就无效,同时构造方法是不能重载的

void main() {
// 注意:new关键字可以省略
var p = new Person("xiaoqiang", 12, "男");
print(p.name); } class Person {
String name;
num age;
String gender;
Person(this.name, this.age, this.gender){
print(this.name);
print(this.age);
print(this.gender);
}
// 如果再定义一个Person方法就会报错
}

可以定义多个构造方法


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;
String gender;
Person(name, age, gender){
this.name = name;
this.age = age;
this.gender = gender;
print(this.name);
print(this.age);
print(this.gender);
}
Person.fn(name, age) {
print(name);
print(age);
}
}

如果一个类是不可变的,这个时候我们需要使用const来声明构造方法,并且把所有变量都设置为final

import 'dart:math';

void main() {
// 注意:new关键字可以省略
var p = const Person("xiaoqiang", 12, "男");
p.name = "xxx"; // 报错 } class Person {
final String name;
final num age;
final String gender;
const Person(this.name, this.age, this.gender); }

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

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

  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.2)

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

  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. 学习源码的第八个月,我成了Spring的开源贡献者

    @ 目录 我的经历 碰到的问题 1.担心闹乌龙 2.不知道要怎么提交 3.英文 4.担心问题描述的不清楚 给你的建议 我的经历 关注我的朋友都知道,关注两个字划重点,要考! 我最近一直在写Spring ...

  2. (易忘篇)java基本语法难点2

    1.不同类型的一维数组元素的默认初始化值 整型元素 : 0 boolean型元素 : false 浮点型元素 : 0.0 char型元素 : 0或'\u0000',而非'0' 引用类型元素 : nul ...

  3. Java实现 LeetCode 554 砖墙(缝隙可以放在数组?)

    554. 砖墙 你的面前有一堵方形的.由多行砖块组成的砖墙. 这些砖块高度相同但是宽度不同.你现在要画一条自顶向下的.穿过最少砖块的垂线. 砖墙由行的列表表示. 每一行都是一个代表从左至右每块砖的宽度 ...

  4. Java实现 蓝桥杯 历届试题 九宫重排

    问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为:12 ...

  5. Java实现第九届蓝桥杯付账问题

    付账问题 题目描述 [题目描述] 几个人一起出去吃饭是常有的事.但在结帐的时候,常常会出现一些争执. 现在有 n 个人出去吃饭,他们总共消费了 S 元.其中第 i 个人带了 ai 元.幸运的是,所有人 ...

  6. [go设计模式]工厂方法模式

    简单工厂就是生产整个计算器,而工厂方法只生产计算器的一部分: 原有的简单工厂可以生'+' '-' '*' '/' ;但是如果添加新的部件'%',厂房就 需要扩充.修改很可以会影响原来部件的正常生产,这 ...

  7. rgb格式颜色与#000000格式颜色的转换

    首先,#000000格式的颜色被成为十六进制颜色码: 6位数分为三组,每两位数一组,依次是红.黄.蓝颜色的强度: 而与此对应的,rgb(39,137,202)依次是十进制的红黄蓝颜色: 因此将rgb格 ...

  8. python基础:如何使用 pip 安装第三方库

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 在这个生活中处处都是大数据和人工智能的时代,总是能在各种角落看到 Pyth ...

  9. HTML的简介和历史发展过程

    HTML的简介和历史发展过程 前言 这次写一篇对于HTML以及CSS的简介,平常我们大家都知道的编程语言有很多种,比如Java.C++.Python等等,每种编程语言都有其独具的特色,不论是语法格式还 ...

  10. IDEA优化内存配置,可提高启动和运行速度

    找到IDEA安装的bin目录 打开idea.exe.vmoptions 文件 关键的三个参数的说明 1. -Xms 是最小启动内存参数 2. -Xmx 是最大运行内存参数 3.-XX:Reserved ...