博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala学习第十四天 Scala中作为接口的trait、在对象中混入trait代码实战
阅读量:2200 次
发布时间:2019-05-03

本文共 1439 字,大约阅读时间需要 4 分钟。

1、java中有interface接口,scala里有同样功能的关键字trait,trait的功能比interface功能强大很多。

2、trait和Java中的有所不同 interface中只能定义abstarct public方法 而trait中可以定义具体实现方法

class UserTrait {
} trait Logger{
def log(msg: String) //在trait中定义抽象方法 def logImpl(msg: String){} //在trait中定义具体方法 } /** * 类可以继承多个trait 语法为:extend trait with trait1 */ class ConcreteLogger extends Logger with Cloneable{
override def log(msg: String) = println("Log:"+msg) //复写Logger trait中log抽象方法 def concreteLogger{ log("It's me") } } /** * 在使用对象混入trait使用的前提是 * 该TraitLogger要继承复写方法的那个trait */ trait TraitLogger extends Logger{
override def log(msg: String){ println("TraitLogger log content is :" + msg) } } trait TraitLoggered{
def logged(msg: String){ println("TraitLoggered log content is :" + msg) } } /** * Scala中作为接口的trait、在对象中混入trait */ object InterfaceOps {
def main(args: Array[String]): Unit = { val concreteLogger = new ConcreteLogger concreteLogger.concreteLogger //row result : Log:It's me val concreteLogger1 = new ConcreteLogger with TraitLogger //在实例化时混入trait 则会调用TraitLogger中的log concreteLogger1.concreteLogger //row result : TraitLogger log content is :It's me } }

scala和java一样只能继承一个类或抽象类,但可以实现多个接口,scala可以在对象中混入多个trait代码,把各种各样工具方法混入类和对象中,这给我们构造大型工厂和复杂一些的上下文环境十分重要。

转载地址:http://brrub.baihongyu.com/

你可能感兴趣的文章
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>
PHPstudy中遇到的坑No input file specified,以及传到linux环境下遇到的坑,模板文件不存在
查看>>
TP5.1事务操作和TP5事务回滚操作多表
查看>>
composer install或composer update 或 composer require phpoffice/phpexcel 失败解决办法
查看>>
TP5.1项目从windows的Apache服务迁移到linux的Nginx服务需要注意几点。
查看>>
win10安装软件 打开时报错 找不到 msvcp120.dll
查看>>
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>
PHPUnit安装及使用
查看>>