1 类的声明
  • 使用class声明一个类
  • 使用new 创建一个对象,new可省略
  • dark文件名和声明的类名可以不一样,与java不同
void main() {
var function = Person();
var function1 = new Person();
function.name;
} class Person {
String name;
}
2 属性与方法
  • 属性默认生成getter和setter,通过.访问
  • 方法不能重载
3 类及成员可见性
  • dark中的可见性以library(库)为单位
  • 默认情况下,一个dark文件就是一个库
  • 使用_ 表示库中类及成员的私有性,只能在当前库中访问类。也可以用_表示私有属性。
  • 使用import导入库

4 定义一个类和私有属性

void main() {
Person person = Person();
} class Person {
String _weight;
}
在其他库中import库,访问不了私有属性 _weight
 
5 计算属性 get关键字
void main() {
Person person = Person();
person.salary = 3000;
person.month = 12;
print(person.yearSalary);
} class Person {
String weight;
int salary;
int month;
//计算属性
num get yearSalary => (salary * month);
}
 
6 构造方法
  • 存在默认的构造方法
  • 如果自定义构造方法,则默认构造方法无效
  • 语法糖形式定义构造方法,并给属性赋值
  • 构造方法不能重载
命名构造方法
可以定义多个构造方法,使用类名.方法的形式实现
class Person {
int salary;
int month;
Person(this.salary,this.month);//构造方法并赋值
Person.withSalary(this.salary);//命名构造方法
num get yearSalary => (salary * month);//计算属性
}

7 工厂构造方法

class Fruit {
final String name;
static final Map<String, Fruit> _cache = <String, Fruit>{}; //工厂构造方法,返回一个对象
factory Fruit(String name) {
if (_cache.containsKey(name)) {
return _cache[name];
} else {
final fruit = Fruit._internal(name);
_cache[name] = fruit;
return fruit;
}
} Fruit._internal(this.name); //私有构造
}

8 静态成员

  • 使用static关键字实现类级别的变量和函数
  • 类中的常量需要使用static const声明

9 对象操作符

  • 条件成员访问 ?.  如果对象或者属性为空,则不调用对象或者属性
  • 类型转换 as
  • 是否指定类型 is is! (类似java instance of )
  • 级联操作.. (类似java build模式 返回当前对象 )
void main() {
Person person = Person(); if(person is Person){
person..age = 10
..salary = 100;
person?.work();
}
} class Person {
int age;
int salary;
work() {
print("work...");
}
}

Dark 类与对象的更多相关文章

  1. Java编程里的类和对象

    像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...

  2. Python - 类与对象的方法

    类与对象的方法

  3. C++基础知识(5)---类和对象

    终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...

  4. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  5. 前端学PHP之面向对象系列第一篇——类和对象

    × 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...

  6. Objective-C Runtime 运行时之一:类与对象

    Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...

  7. [Java入门笔记] 面向对象编程基础(一):类和对象

    什么是面向对象编程? 我们先来看看几个概念: 面向过程程序设计 面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实 ...

  8. 解析Java类和对象的初始化过程

    类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...

  9. 02OC的类和对象

    这章重点介绍OC的类以及对象,由于C语言是面向过程语言,而OC只是对于C语言多了一些面向对象的特性,所以OC相对于其他面向对象语言,例如C#.Java等没有那么多的语法特性,所以差别还是比较大的. 一 ...

随机推荐

  1. Tcp之心跳包

    Tcp之心跳包 心跳包 跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着. 事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很 ...

  2. 常用的排序算法介绍和在JAVA的实现(二)

    一.写随笔的原因:本文接上次的常用的排序算法介绍和在JAVA的实现(一) 二.具体的内容: 3.交换排序 交换排序:通过交换元素之间的位置来实现排序. 交换排序又可细分为:冒泡排序,快速排序 (1)冒 ...

  3. orcle_day02

    第三章:单值函数 函数分为: 1.单值函数 1.字符函数 2.日期函数 3.转换函数 4.数字函数 2.分组函数(后面的章节再做学习) 哑表dual dual是一个虚拟表,用来构成select的语法规 ...

  4. insightface作者提供数据训练解读

    1.下载源码: 开源代码地址:https://github.com/deepinsight/insightface 2.查看作者项目训练要求 (1)训练数据 训练数据使用作者提供并制作好的数据,如下图 ...

  5. kotlin函数式编程入门及图片处理

    函数式编程入门: 对于面向对象编程[OOP]和函数式编程[FP] 由于在JAVA8的学习中系统的学习过了,所以这里对其概念就不过多解释了,下面直接用代码来看下在kotlin中函数式编程是如何编写的: ...

  6. mybatis 关联查询和嵌套查询的简单示例

    两个表: Customer 顾客表 create table if not exists customer( customer_id int primary key auto_increment, f ...

  7. shell中的控制流结构

    shell中的控制流结构 1.if...then..else..fi语句 2.case语句 3.for循环 4.until 语句 5.while循环 6.break控制 7.continue 控制 1 ...

  8. 阻止默认/冒泡事件(兼容ie)

    (1) 阻止默认事件 function(e){ if(e && e.preventDefault){ e.preventDefault(); }else{ //IE window.ev ...

  9. 【LuoguP4081】[USACO17DEC]Standing Out from the Herd

    题目链接 题意 给定多个字符串,每个串中仅在该串中出现的本质不同的子串个数. Sol 多串匹配想到用广义SAM. 之后从串的匹配角度不是很好做.发现一个本质不同的串最多只会贡献到一个串的答案里. 那么 ...

  10. 【Wince-DataTable填充ListView】DataTable的数据填充到ListView控件,适用.Net2.0

    在开发WinCE6.0程序的时候,要把DataTable的数据显示到ListView控件上,无法使用绑定, 只能使用循环遍历. 思路:外循环遍历行,内循环遍历列 //DataTable:dt2 //L ...