1 继承
  • 使用extends继承一个类
  • 子类会继承父类可见的属性和方法,不包含构造方法
  • 可以复写父类的方法
  • 单继承,多态性
构造方法
  • 子类的构造方法会默认调用父类的无名无参构造方法
  • 如果父类没有无名无参,则需要显示调用父类构造方法
class Student extends Person{
Student(int salary, int month) : super(salary, month);
} class Person {
int salary;
int month;
Person(this.salary, this.month); //构造方法并赋值
Person.withSalary(this.salary); //命名构造方法
num get yearSalary => (salary * month); //计算属性
work() {
print("work...");
}
}

2 抽象类

  • 使用abstract定义
  • 抽象类可以没有抽象方法
  • 抽象方法无须abstract,无实现
  • 有抽象方法的类必须定义成抽象类
  • 抽象类不能实例化,需要子类继承覆写抽象方法
//abstract定义抽象类
abstract class Person {
//可以没有抽象方法
//抽象方法 不用abstract修饰,无实现
void run();
}
3 接口
  • 类和接口是统一的,类就是接口
  • 每个类都隐式的定义了一个包含所有实例成员的接口
  • 如果是复用已有类的实现,使用继承extends
  • 如果是使用父类的行为,使用implements接口 (结合抽象类实现)
//abstract定义抽象类( 类即接口)
abstract class Person {
//可以没有抽象方法
//抽象方法 不用abstract修饰,无实现
void run();
} class Student implements Person{
@override
void run() {
// TODO: implement run
}
}
4 Mixins (非常强大,需要在实际运用中领会)
  • 类似于多继承,是在多继承中重用一个类代码的方式。(在一个类中使用多个类的属性和方法)
  • 作为Minxins的类不能有显示的构造方法
  • 作为Minxins的类只能继承(extends)Object ,可以implements 接口
  • 使用with连接一个或多个mixins
void main() {
C().a();//由于B是最后with的,这里调用的是B的a方法
C().b();//这里调用的是B的b方法
} class C extends A with B {}//C拥有A、B的属性和方法啦 class A {
a() {
print("a.a");
}
} class B {
a() {
print("b.a");
} b() {
print("b.b");
}
}

5 操作符覆写

void main() {
print(Person.withAge(18) > Person.withAge(20));
} class Person {
int age;
Person.withAge(this.age); bool operator >(Person p) {
return this.age > p.age;
}
}
6 枚举
使用与java类似。不同在于可以获取枚举的索引,默认从0开始。
 
7 泛型
使用与java类似。
  • 类的泛型:定义在类级别上
  • 方法的泛型:定义在方法上
void main() {
var utils = new Utils<String>();
utils.put("Hello!";)
} class Utils<T> {
T element;
void put(T element) {
this.element = element;
}
}

Dark 面向对象的更多相关文章

  1. C++面向对象多线程入门

    第1节   背景 为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍. 早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序.在大型机年代,计算能力是一种宝贵资源.对于资 ...

  2. 第七篇 Python面向对象

    类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用,特征被称为属性,行为被称为方法,类就相当于制造飞机时的图纸,是一个模板,是负责创建对象的. 对象是由类创建出来的一个具体存在,可 ...

  3. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

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

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

  5. 一起学 Java(二)面向对象

    一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...

  6. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  7. 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型

    前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...

  8. .NET 基础 一步步 一幕幕[面向对象之对象和类]

    对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...

  9. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

随机推荐

  1. Elasticsearch中文文档,内容不全

    注意 内容不全,这是观看中文文档进行操作的 文档地址 旧版中文文档,部分内容过期 https://www.elastic.co/guide/cn/elasticsearch/guide/current ...

  2. 指针、数组与sizeof运算符

    指针.数组与sizcof运算符 (1)sizeof是c语言的一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof的作用是用来返同()里面的变量或者数据类型占用的内存字节数. (2)s ...

  3. FushionCharts

    FushionCharts官网:http://www.fusioncharts.com/ 在线Demo:http://www.fusioncharts.com/free/demos/Blueprint ...

  4. 基于初始种子自动选取的区域生长(python+opencv)

    算法中,初始种子可自动选择(通过不同的划分可以得到不同的种子,可按照自己需要改进算法),图分别为原图(自己画了两笔为了分割成不同区域).灰度图直方图.初始种子图.区域生长结果图.另外,不管时初始种子选 ...

  5. 我说CMMI之五:CMMI 4个等级的区别--转载

    我说CMMI之五:CMMI 4个等级的区别 了解CMMI的人都知道CMMI有5个等级,但是要将5个等级的区别真正说明白,说透彻不太容易.下面我们用一个表格概括之.表格中并没有1级,1级在CMMI中没有 ...

  6. k8sDeployment控制器

    简写为deploy,是k8s控制器的另一种实现,它构建于ReplicaSet之上,可为pod和rs资源提供声明式更新. deploy控制器资源的大部分功能均可通过调用rs来实现,同时,还增添了部分特性 ...

  7. 同余&逆元简单总结

    # 同余&逆元 1. 同余 1. 同余的基本概念及性质 若\(x\)%\(m=a\)即m是 x-a 的一个因子, 则称x与a关于m同余,记作:\[x \equiv a(mod \;m)\] 同 ...

  8. JavaScript基础——JavaScript函数(笔记)

    avaScript 函数(笔记) JavaScript 是函数式编程语言,在JavaScript脚本中可以随处看到函数,函数构成了JavaScript源代码的主体. 一.定义函数 定义函数的方法有两种 ...

  9. libkmcuda安装

    编译安装 1,前期准备 git clone https://github.com/src-d/kmcuda cd kmcuda/src/ 例如: cmake -DCMAKE_BUILD_TYPE=Re ...

  10. jquery delegate()方法 语法

    jquery delegate()方法 语法 作用:delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数.使用 delegate( ...