Dark 面向对象
- 使用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();
}
- 类和接口是统一的,类就是接口
- 每个类都隐式的定义了一个包含所有实例成员的接口
- 如果是复用已有类的实现,使用继承extends
- 如果是使用父类的行为,使用implements接口 (结合抽象类实现)
//abstract定义抽象类( 类即接口)
abstract class Person {
//可以没有抽象方法
//抽象方法 不用abstract修饰,无实现
void run();
} class Student implements Person{
@override
void run() {
// TODO: implement run
}
}
- 类似于多继承,是在多继承中重用一个类代码的方式。(在一个类中使用多个类的属性和方法)
- 作为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;
}
}
- 类的泛型:定义在类级别上
- 方法的泛型:定义在方法上
void main() {
var utils = new Utils<String>();
utils.put("Hello!";)
}
class Utils<T> {
T element;
void put(T element) {
this.element = element;
}
}
Dark 面向对象的更多相关文章
- C++面向对象多线程入门
第1节 背景 为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍. 早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序.在大型机年代,计算能力是一种宝贵资源.对于资 ...
- 第七篇 Python面向对象
类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用,特征被称为属性,行为被称为方法,类就相当于制造飞机时的图纸,是一个模板,是负责创建对象的. 对象是由类创建出来的一个具体存在,可 ...
- Java学习笔记之---面向对象
Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...
- angular2系列教程(六)两种pipe:函数式编程与面向对象编程
今天,我们要讲的是angualr2的pipe这个知识点. 例子
- 一起学 Java(二)面向对象
一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...
- .NET 基础 一步步 一幕幕[面向对象之对象和类]
对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...
- 简单分析JavaScript中的面向对象
初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...
随机推荐
- 第一篇、Python入门
一 编程与编程语言 python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 编程的目的: #计算机的发明,是为了用机器取代/解放人力,而 ...
- python用jdbc读取oracle表和列的信息,生成java代码
这个项目的地址 传送门 第一个python3项目,对python 还是学习中,请大佬轻喷,欢迎指点 import jaydebeapi from .database import Database d ...
- python之django_form组件笔记
Form字段 Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=None, 初始 ...
- Reservoir Computing: Harnessing a Universal Dynamical System
原文连接:https://sinews.siam.org/Details-Page/reservoir-computing-harnessing-a-universal-dynamical-syste ...
- DevExpress ASP.NET Core v19.1版本亮点:Pivot Grid控件等
行业领先的.NET界面控件DevExpress 发布了v19.1版本,本文将以系列文章的方式为大家介绍DevExpress ASP.NET Core Controls v19.1中新增的一些控件及增强 ...
- sublime text 前端插件安装
Package Control安装 打开sublime编辑器,ctrl + ` 打开安装PackageControl界面: sublime text3: import urllib.request,o ...
- jsp九大内置对象及四个作用域【转】
1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必 ...
- 记Springcloud Config Service整合gitlab一坑
spring.cloud.config.server.git.uri=http://ip/***/configserver.git必须加上.git
- CNN简略总结
https://blog.csdn.net/real_myth/article/details/51824193 池化层的作用: 感受野变化...?? 1*1卷积核的作用 1. 实现跨通道的交互和信息 ...
- 交叉熵和softmax
深度学习分类问题结尾就是softmax,损失函数是交叉熵,本质就是极大似然...