文档章节

关于trait的几点思考

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

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

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

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

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

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

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

© 著作权归作者所有

共有 人打赏支持
牧师-Panda
粉丝 30
博文 146
码字总数 180044
作品 0
浦东
PHP中实现代码复用的Trait方法的一些特性

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

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

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

Spark亚太研究院
2014/11/27
0
0
PHP traits (复用机制)

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

Coding_ff
2017/05/27
0
0
深入理解 Rust 的动态分派模型

让我做个开场白,我是rust世界的新手(虽然我喜欢它很久了),如果我犯了技术性错误,请让我知道并且我会尽力纠正它们。说到这为止,让我们开始吧! 在下面的代码片段中可以看到我深入研究动...

xiaoaiwhc1
05/09
0
0
phalcon 框架软删除与物理删除思考与实现

---title: phalcon 框架软删除与物理删除思考与实现date: 2018-09-11 11:44:36tags:PHP phalcon phalcon 框架软删除与物理删除思考与实现 在项目开发中,业务的不同则对数据库中数据的操作也是...

anziguoer
09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用Newtonsoft将DataTable转Json

使用Newtonsoft将DataTable转Json Newtonsoft提供的将DataTable转成Json: /// <summary> /// DataTable转Json /// </summary> /// <param name="dt"></param> /// <ret......

DemonsI
刚刚
0
0
centos7安装zookeeper3.4.6

注:zookeeper充当注册中心 下载地址 http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/ 单机 下载完成后,将安装包上传值服务器,解压 tar xvzf zookeeper-3.4.6.tar.gz 进入解...

码代码的小司机
1分钟前
0
0
136. Single Number

136. Single Number 题意:一个数组中所有数字都是两两相同,只有一个数字是单独的,求出这个数字的值。 很简单的题,使用异或就能处理。 异或介绍:bit位上的值不同,异或后,值为1.否则为0...

117
3分钟前
0
0
Hash和HashCode深入理解

目录介绍 1.Hash的作用介绍 1.1 Hash的定义 1.2 Hash函数特性 1.3 Hash的使用场景 2.如何判断两个对象相等 2.1 判断两个字符串 2.2 判断两个int数值 2.3 其他基本类型 3.HashCode深入分析 3....

潇湘剑雨
9分钟前
0
0
ecshop 漏洞如何修复 补丁升级与安全修复详情

目前ecshop漏洞大面积爆发,包括最新版的ecshop 3.0,ecshop 4.0,ecshop2.7.3全系列版本都存在着高危网站漏洞,导致网站被黑,被篡改,被挂马,许多商城系统深受其漏洞的攻击,给商城的运营者...

网站安全
10分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部