dart快速入门教程 (7.1)
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)的更多相关文章
- dart快速入门教程 (8)
9.dart中的库 9.1.自定义库 自定义库我们在前面已经使用过了,把某些功能抽取到一个文件,使用的时候通过import引入即可 9.2.系统内置库 以math库为例: import "d ...
- dart快速入门教程 (7.4)
7.12.多态 多态字面上理解就是多种状态,通俗的说,多态表现为父类定义一个方法不去实现,子类继承这个方法后实现父类的方法,这个方法有多种表现 // import 'person.dart'; voi ...
- dart快速入门教程 (7.3)
7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...
- dart快速入门教程 (7.2)
7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...
- dart快速入门教程 (2)
2.变量和数据类型 2.1.变量和常量 变量通俗的说就是可以变化的量,作用就是用来存储数据,你可以把一个变量看作是一个水果篮,里面可以装苹果.梨.香蕉等,常量就是一个固定的值,和变量是相对的,变量可以 ...
- dart快速入门教程 (1)
1.环境搭建 1.1.dart简介 Dart 是一种 易于学习. 易于扩展.并且可以部署到 任何地方 的 应用 编程 语言.Google 使用 Dart 来开发 大型应用.flutter使用dart语 ...
- dart快速入门教程 (6)
6.内置操作方法和属性 6.1.数字类型 1.isEven判断是否是偶数 int n = 10; print(n.isEven); // true 2.isOdd判断是否是奇数 int n = 101 ...
- dart快速入门教程 (5)
5.函数 5.1.函数定义 语法: 返回值类型 函数名(参数类型 参数1, 参数类型 参数2,...) { // 函数体 return '返回值' } 举例: void main() { print( ...
- dart快速入门教程 (4)
4.流程控制 4.1.分支结构 1.if语句 void main() { int score = 80; if (score >= 90) { print('优秀'); } else if (s ...
随机推荐
- Java-接口概念辨析
https://mp.weixin.qq.com/s/HQZhlS-ffgEMqhB2rHax1w 1. 类 是属性成员和方法成员的集合:2. 父类 是子类相同属性成员和方法成 ...
- Java试题错题集01
1.javac与java命令 两个命令 javac 和 java. javac 后面跟着的是java文件的文件名,例如 HelloWorld.java. 该命令用于将 java 源文件编译为 clas ...
- 多线程与RunLoop
iOS开发中的多线程 一个iOS程序,默认开启1条线程--主线程orUI线程 主线程主要作用: 显示/刷新UI界面 处理UI事件(点击.滚动.拖拽事件等) 主线程使用注 ...
- 面试题: SpringBoot 的自启动原理
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 引言 不论在工作中,亦或是求职面试,Spring Boot 已经成为我们必知必会的技能项.除了比较老旧的 ...
- Java实现 蓝桥杯VIP 算法提高 铺地毯
算法提高 铺地毯 时间限制:1.0s 内存限制:256.0MB 问题描述 为了准备一个学生节,组织者在会场的一片矩形区域(可看做是平面直角坐标 系的第一象限)铺上一些矩形地毯.一共有n 张地毯,编号从 ...
- PAT 程序运行时间
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间.这个时间单位是 clock ...
- Python学习之温度转换实例分析篇
#TempConvert.py Tempstr=input('请输入要转换的温度值:') if Tempstr[-1] in ['C','c']: F=1.8*eval(Tempstr[0:-1])+ ...
- 练习C++的vector语法-约瑟夫问题
//测试vector,约瑟夫问题 #include <iostream> #include <vector> using namespace std; int main() { ...
- CSAPP 5 - 优化程序性能
CSAPP 5 - 优化程序性能 1. 概述 首当其冲的,还是要编写出好的算法和数据结构,优化内部结构 其次才是编写出能让编译器 易优化的,高效的可执行代码.这点在特定的机器上可能有着特定的不同的优化 ...
- SpringSceurity(3)---图形验证码功能实现
SpringSceurity(3)---图形验证码功能实现 有关springSceurity之前有写过两篇文章: 1.SpringSecurity(1)---认证+授权代码实现 2.SpringSec ...