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中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点. 本随笔分为两部分: 一.面向对象编程 二.面向对象编程详细描述 ------------ ...
随机推荐
- 【转载】Gradle学习 第三章:教程
转载地址:http://ask.android-studio.org/?/article/15 3.1. Getting Started 入门The following tutorials intro ...
- Jpa的简介
Jpa:是用于数据持久化的一组标准接口. 1.HelloWorld的编写 创建EntityManagerFactory 创建EntityManager 开启事务 数据持久化 提交事务 关闭Entity ...
- provisional headers are shown 一例
系统首页的ajax调用出现 报错: provisional headers are shown 最后查到的原因时,mysql数据库的磁盘满了,而首页的ajax调用要插入一条记录到数据库,卡住了.
- windows server 2012配置php环境教程
买了windows系统的服务器(VPS)等之后我们需要一个php环境来搭建自己的项目,这里介绍手工在windows server 2012上面配置php环境的具体步骤,适合使用服务器和VPS等的新手. ...
- D. Maxim and Array
https://www.cnblogs.com/qscqesze/p/5925893.html 原博客 http://codeforces.com/group/1EzrFFyOc0/contest/ ...
- Removing Stones(2019年牛客多校第三场G+启发式分治)
目录 题目链接 题意 思路 代码 题目链接 传送门 题意 初始时有\(n\)堆石子,每堆石子的石子个数为\(a_i\),然后进行游戏. 游戏规则为你可以选择任意两堆石子,然后从这两堆中移除一个石子,最 ...
- 搜狐视频 登录 md5 加密破解
这是一个简单的md5加密,可以学习一下js加密的破解流程,当一个入门级的教程 第一步:请求抓包 password是32位的字母和数字组合,猜测可能是md5加密,我们md5在线工具上试一下 发现我们的猜 ...
- MySQL 官方测试库
MySQL 官方测试库 github 地址 https://github.com/datacharmer/test_db MySQL 文档地址 https://dev.mysql.com/doc/em ...
- SDN Reading Notes
网络操作编程语言:Frenetic QoS策略实施框架:PolicyCop
- mybatis学习4
QL99中的连接查询 连接查询 交叉连接 select * from A,B; 内连接 隐式内连接 select * from A,B where 条件 显示内连接 select * fr ...