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中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点. 本随笔分为两部分: 一.面向对象编程 二.面向对象编程详细描述 ------------ ...
随机推荐
- ES6 函数的拓展(四)
一.参数带默认值函数1.在函数形参可以赋予函数默认值[即实参严格匹配undefined时,在函数内部使用形参时调用它的默认值]2.函数name属性 [返回函数名称,无名的函数返回空字符串]3.函数le ...
- 监控微信小程序中的慢HTTP请求
摘要: 请求时间太长,影响用户体验,使用 Fundebug 监控慢请求. Fundebug 的微信小程序监控插件在 0.5.0 版本已经支持监控 HTTP 请求错误,在小程序中通过wx.request ...
- Java 之 Properties 集合
一.Properties 概述 Properties 是Hashtable的子类,不允许key和value是null,并且它的key和value的类型都是String. 二.常用方法 1.构造方法 P ...
- seq2seq模型详解及对比(CNN,RNN,Transformer)
一,概述 在自然语言生成的任务中,大部分是基于seq2seq模型实现的(除此之外,还有语言模型,GAN等也能做文本生成),例如生成式对话,机器翻译,文本摘要等等,seq2seq模型是由encoder, ...
- js 驼峰命名和下划线互换
代码走你 // 下划线转换驼峰 function toHump(name) { return name.replace(/\_(\w)/g, function(all, letter){ return ...
- SDN Reading Notes
网络操作编程语言:Frenetic QoS策略实施框架:PolicyCop
- 【Excel】IF函数
判断条件: 一版判断:1>2大于 1<2小于 1=2等于 1<>2不等于 1>=2 1<=2 交集:AND() 并集:OR() 多条件:以后补
- git bisect
reference : http://www.ruanyifeng.com/blog/2018/12/git-bisect.html git bisect 命令教程 作者: [12]阮一峰 日期: [ ...
- Pandas | 22 时间差
时间差(Timedelta)是时间上的差异,以不同的单位来表示.例如:日,小时,分钟,秒.它们可以是正值,也可以是负值.可以使用各种参数创建Timedelta对象,如下所示 - 字符串 通过传递字符串 ...
- 原生php分页的封装,只封装函数,可适用所有的表
<?php/** * 封装分页函数 * $table [字符串] 表名 * @$size [数字][每页显示条数] */function fenye($table, $size){ $link ...