文档章节

关于trait的几点思考

牧师-Panda
 牧师-Panda
发布于 2017/08/25 18:35
字数 463
阅读 60
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

当你实现了一个可重用的行为集合时,你将必须决定是使用特质还是抽象类。这里没有固定的规律,但是本节包含了几条可供考虑的导则。

如果行为不会被重用,那么就把它做成具体类。具体类没有可重用的行为。

如果要在多个不相关的类中重用,就做成特质。只有特质可以混入到不同的类层级中。

如果你希望从Java代码中继承它,就使用抽象类。因为特质和它的代码没有近似的Java模拟,在Java类里继承特质是很笨拙的。而继承Scala的类和继承Java的类完全一样。除了一个例外,只含有抽象成员的Scala特质将直接翻译成Java接口,因此即使你想用Java代码继承,也可以随心地定义这样的特质。

如果你计划以编译后的方式发布它,并且你希望外部组织能够写一些继承自它的类,你应更倾向于使用抽象类。原因是当特质获得或失去成员,所有继承自它的类就算没有改变也都要被重新编译。如果外边客户仅需要调用行为,而不是继承自它,那么使用特质没有问题。

如果效率非常重要,倾向于类。大多数Java运行时都能让类成员的虚方法调用快于接口方法调用。特质被编译成接口,因此会付出微小的性能代价。然而,仅当你知道那个存疑的特质构成了性能瓶颈,并且有证据说明使用类代替能确实解决问题,才做这样的选择。

© 著作权归作者所有

牧师-Panda
粉丝 33
博文 146
码字总数 180044
作品 0
浦东
私信 提问
加载中

评论(0)

PHP中实现代码复用的Trait方法的一些特性

在整理“PHP基础”这篇文档时,看到了trait方法,感觉比较陌生,所以今天上午用两个小时的时间,查阅测试了trait方法的一些特性及用法,整理发布了这篇博客。 Trait 是 PHP5.4 中的新特性,是...

尘世如潮
2016/04/12
793
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第2小节(2)

3,动手实战Scala中的抽象类 抽象类的定义需要使用abstract关键字: 上面的代码定义并实现了抽象方法,需要注意的是我们把直接运行的代码放在了App这个trait的子类中,关于App内部帮助我们实...

Spark亚太研究院
2014/11/27
156
0
Lumen、Laravel开发问题记录

前言:个人杂项 2018.5.17 14:55 1. lumne 连接Sqlite时,一直报错: Call to a member function connection() on null 解决方法: app.php中打开Orm的注释!!!坑爹,谁关了!!! 17:03 2....

osc_8242avx7
2018/05/17
2
0
PHP 中的关于 trait 的简单

什么是 trait 看看 PHP 官网的介绍。 自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。 Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的...

码农UP2U
2019/10/27
0
0
PHP traits (复用机制)

最近在学习Laravel中,遇到了很多关于Traits ,查了下资料,分享下。 提到 php 的代码复用,我们可能第一时间会想到继承,但是这种单继承语言一旦派生的子类过多,那么会产生一系列的问题,比...

Coding_ff
2017/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

c/c++编写window服务的授权服务(二)

//c/c++编写window服务的授权服务(二) //定义授权服务的头文件LicenseService.h #pragma once //建立工程:win32控制平台应用程序 //LicenseService.cpp //用C/C++编写的Window服务一例 //安...

osc_wxsc35it
42分钟前
13
0
开发一个大型后台管理系统,应该用前后端分离的技术方案吗?

话说这天,我们团队开会讨论了一个问题,不,与其说“讨论”,不如说“争吵”更合适。 背景是这样的: 我们要开发一个 xxx 后台管理系统,这个系统业务复杂、功能又多,大家的争吵集中在“这...

osc_qalfjuu8
44分钟前
15
0
美团点评的移动端网络优化实践:大幅提升连接成功率、速度等

1、引言 网络优化对于移动端App产品的用户体验至关重要,也与公司的运营和营收息息相关。 这里列举两个公开的数据: “《页面加载超过3秒,57%的用户会离开》” “《Amazon页面加载延长1秒,...

imtech
45分钟前
15
0
在webstorm 中直接运行ts文件

安装插件后重启IDE Run Configuration for TypeScript

阿豪boy
45分钟前
31
0
PyCharm2020激活破解教程

本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12767075.html 正版肯定是要支持的,但是贫穷限制了我。现在买是不可能买的,只能靠着破解激活来维持生计...

osc_91g5cdgs
46分钟前
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部