基本内容概述:

类与对象:

计算属性:

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面向对象编程(一)的更多相关文章

  1. Dart编程实例 - Dart 面向对象编程

    Dart编程实例 - Dart 面向对象编程 class TestClass { void disp() { print("Hello World"); } } void main ...

  2. Dart面向对象编程(二)

    继承: person.dart: class Person{ String name; int age; String _birthday; bool get isAdult => age &g ...

  3. Flutter学习笔记(8)--Dart面向对象

    如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...

  4. Dart 面向对象 类 方法

    Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类. 面向对象编程(OOP)的三个基本特征是:封装.继承.多态 封装:封装是对象和类概念的主要特性. ...

  5. Dart语言学习(十二) Dart面向对象

    Dart作为一种高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式. 基于mixin的继承方式是指:一个类可以继承自多个父类,相当于其他语言里的多继承. 所有的类都有同一个基类Obje ...

  6. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  7. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  8. PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程

    PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...

  9. Delphi_09_Delphi_Object_Pascal_面向对象编程

    今天这里讨论一下Delphi中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点. 本随笔分为两部分: 一.面向对象编程 二.面向对象编程详细描述 ------------ ...

随机推荐

  1. Java 之 枚举(Enum)

    一.枚举 1.概述 枚举:JDK1.5引入的,类似于穷举,一一罗列出来 Java 枚举:把某个类型的对象,全部列出来 2.应用 什么情况下会用到枚举类型? 当某个类型的对象是固定的,有限的几个,那么就 ...

  2. android Gradle下载慢,使用阿里镜像

    在Project下的 build.gradle添加阿里镜像 buildscript { repositories { maven{ url 'http://maven.aliyun.com/nexus ...

  3. ffmpeg 基本数据结构和对象(一): AVPacket、AVPicture、AVFrame

    来源:http://blog.csdn.net/chance_yin/article/details/16817957 一.AVPacket /** * AVPacket 作为解码器的输入 或 编码器 ...

  4. Golang循环中调用go func参数异常分析

    项目中,需要循环调用API服务器列表,在循环中使用go func创建协程时遇到了参数失灵的现象. 具体代码如下所示: for _, apiServerAddr := range apiServerAd ...

  5. Nginx配置文件 nginx.conf 和default.conf 讲解

    nginx.conf /etc/nginx/nginx.conf ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; ...

  6. JAVA concurrent包下Semaphore、CountDownLatch等用法

    CountDownLatch 跟join的区别 CountDownLatch用处跟join很像,但是CountDownLatch更加灵活,如果子线程有多个阶段a.b.c; 那么我们可以实现在a阶段完成 ...

  7. intellij idea 2019 右键包新建文件是没有java Class选项

    今天要测试一个技术点于是新建了一个springboot工程, 在新建文件的时候发现右键后java class文件选项不见了. 以前真的没有碰到这种问题, 感觉很是意外于是百度Google后找到了解决办 ...

  8. rhel7学习第四天

    学习<Linux就该这么学>第二周,学习了最重要的几个文件操作命令

  9. 第一部分day4-三次登录实验、字符编码

    #-----三次登录实验----- memu = { "陕西":{ "西安市":{ "新城区":["大明宫遗址",&qu ...

  10. 目标检测论文解读11——Mask R-CNN

    目的 让Faster R-CNN能做实例分割的任务. 方法 模型的结构图如下. 与Faster R-CNN相比,主要有两点变化. (1) 用RoI Align替代RoI Pool. 首先回顾一下RoI ...