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. C# 之 String.Empty

    .NET Framework 类库,表示空字符串,此字段为只读,命名空间:System.程序集:mscorlib(在 mscorlib.dll 中).   EG:protected string lo ...

  2. Tensorflowlite移植ARM平台iMX6

    一.LINUX环境下操作: 1.安装交叉编译SDK (仅针对该型号:i.MX6,不同芯片需要对应的交叉编译SDK) 编译方法参考:手动编译用于i.MX6系列的交叉编译SDK 2.下载Tensorflo ...

  3. 【NOI 2019】同步赛 / 题解 / 感想

    非常颓写不动题怎么办…… 写下这篇博客警示自己吧…… 游记 7.16 我并不在广二参加 NOI,而是在距离广二体育馆一公里远的包间打同步赛(其实就是给写不动题找个理由) 上午身体不舒服,鸽了半天才看题 ...

  4. Elasticsearch改动

    随着Elasticsearch的版本升级,Elasticsearch的一些特性也在改变,下面是一些需要注意的地方 v6.x 版本之前 : 一个index下面是可以创建多个type v6.x 版本 : ...

  5. string::find_first_of

    string (1) size_t find_first_of (const string& str, size_t pos = 0) const noexcept; c-string (2) ...

  6. Automatches

    import os def combine(ArrayList,count): ArrayList=list(ArrayList) newArrayList=[] for i in range(0,A ...

  7. ASP.NET MVC5入门指南(1)*入门介绍

    以下指南说明了什么是ASP.NET MVC,并说明了如何入门. ASP.NET MVC 5入门 入门 添加控制器 添加视图 添加模型 创建连接字符串并使用SQL Server LocalDB 从控制器 ...

  8. R语言-程序执行时间

    我们往往对自己编写程序的运行效率十分关心,需要查看程序的执行时间. 在R中,获得时间的函数有不少,比如system.time().proc.time()等. 个人使用较多的是proc.time() & ...

  9. Unity3D资源

    1.ShareSDK 地址:https://github.com/MobClub/New-Unity-For-ShareSDK 文档:产品集成步骤 2.Protobuf https://github. ...

  10. CSS 按钮

    总结有关按钮的各种样式 ㈠基本按钮样式 看一下没有进行css样式设计时按钮的样子与进行样式设计的按钮样子 <!DOCTYPE html> <html> <head> ...