Dart面向对象编程(一)
基本内容概述:

类与对象:



计算属性:

void main(){
var rect = new Rectangle();
rect.width = 20;
rect.height = 10;
print(rect.area);
}
class Rectangle{
num width,height;
/*num area(){
return width*height;
}*/
//计算属性:返回值类型 get 计算属性名
/*num get area{
return width*height;
}*/
//以上可以简写如下:
num get area => width*height;
}
打印结果:200
构造方法:

void main(){
var person = new Person('wwk', 90,'Female');
/*person.name = 'wwk';
person.age = 33;*/
//person.work();
}
class Person{
String name;
int age;
final String gender;
/*Person(String name,int age){
this.name = name;
this.age = age;
}*/
//语法糖形式,语法糖和普通构造方法有区别 语法糖可以对final属性设置,因为它是在构造方法执行之前对属性赋值
Person(this.name,this.age,this.gender){
print(name);
}
void work(){
print('name is $name,age is $age, gender is $gender working...');
}
}
因为构造方法不能被重载,如果要实现多个构造方法要使用命名构造方法。


常量构造方法:

void main(){
//const person = const Person('wwk', 90,'Female');
//const 可以省略
const person = Person('wwk', 90,'Female');
person.work();
}
class Person{
final String name;
final int age;
final String gender;
const Person(this.name,this.age,this.gender);
void work(){
print('name is $name,age is $age, gender is $gender working...');
}
}
工厂构造方法:

工厂构造方法和其他构造方法最大的不同就是在工厂构造方法中可以返回对象。
class Logger{
final String name;
static final Map<String, Logger> _cache = <String,Logger>{};
Logger._internal(this.name);
factory Logger(String name){
if(_cache.containsKey(name)){
return _cache[name];
}else{
final logger = Logger._internal(name);
_cache[name] = logger;
return logger;
}
}
void log(String msg){
print(msg);
}
}
初始化列表:

class Person{
String name;
int age;
final String gender;
Person(this.name,this.age,this.gender);
//初始化列表
Person.withMap(Map map):gender = map['gender']{
this.name = map['name'];
this.age = map['age'];
}
//初始化列表也可以写成如下形式:
Person.withMapnew(Map map):name = map['name'],age = map['age'],gender = map['gender']{
}
}
静态成员:

对象操作符:

对象call方法:
总结:

Dart面向对象编程(一)的更多相关文章
- Dart编程实例 - Dart 面向对象编程
Dart编程实例 - Dart 面向对象编程 class TestClass { void disp() { print("Hello World"); } } void main ...
- Dart面向对象编程(二)
继承: person.dart: class Person{ String name; int age; String _birthday; bool get isAdult => age &g ...
- Flutter学习笔记(8)--Dart面向对象
如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...
- Dart 面向对象 类 方法
Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类. 面向对象编程(OOP)的三个基本特征是:封装.继承.多态 封装:封装是对象和类概念的主要特性. ...
- Dart语言学习(十二) Dart面向对象
Dart作为一种高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式. 基于mixin的继承方式是指:一个类可以继承自多个父类,相当于其他语言里的多继承. 所有的类都有同一个基类Obje ...
- angular2系列教程(六)两种pipe:函数式编程与面向对象编程
今天,我们要讲的是angualr2的pipe这个知识点. 例子
- 带你一分钟理解闭包--js面向对象编程
上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...
- PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程
PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...
- Delphi_09_Delphi_Object_Pascal_面向对象编程
今天这里讨论一下Delphi中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点. 本随笔分为两部分: 一.面向对象编程 二.面向对象编程详细描述 ------------ ...
随机推荐
- 【python爬虫】每天统计一遍up主粉丝数!
目录 每天统计一遍up主粉丝数! 第一步,爬取up主的粉丝信息 1.首先导入需要的包 2.为了方便,把它写成一个函数 3.那么就调用一下这个函数吧! 4.运行一下,成功啦! 第二,说好的每天统计一遍呢 ...
- i春秋——“百度杯”CTF比赛 十月场——Vld(Vulcan Logic Dumper 、php opcode、sql 报错注入)
打开题目看到提示 "do you know Vulcan Logic Dumper?" ,再查看源码看到"<!-- index.php.txt ?>" ...
- js 字符串换行 显示 使用 \ 转义
js 字符串 有没有 像C# @ 那种 换行也可以显示的方法\
- 网络编程(二)--TCP协议、基于tcp协议的套接字socket
一.TCP协议(Transmission Control Protocol 传输控制协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会 ...
- Linux shell if条件判断1
shell 逻辑控制语句: 分支判断结构 if case 循环结构 for while unt ...
- HDU1754 && HDU1166 线段树模板题
HDU1754 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 题目分析:对于给出的一个很长的区间,对其进行单点更新值和区间求最大值的操作,由于 ...
- 关系型数据库 RDS(Relational Database Service),知识点
资料 网址 官方介绍 https://help.aliyun.com/document_detail/26092.html?spm=5176.2020520104.0.0.2b4b1450yqd1gg ...
- 201800628模拟赛T2——最大土地面积
题目描述 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 输入输出格式 输入格式: 第1行一个正整数N,接下来N行,每行2个数x,y ...
- PassArrayByCopy_test.php
<?php //PassArrayByCopy_test.php $a=array("a","b","c"); function te ...
- Scheme、Claim、ClaimsIdentity、ClaimsPrincipal介绍
在 token 创建.校验的整个生命周期中,都涉及到了 Scheme.Claim.ClaimsIdentity.ClaimsPrincipal 这些概念,如果你之前有使用过微软的 Identity ...