Scala语言学习笔记——特质、嵌套类、类型投影及隐式转换

本文介绍了Scala中的特质,强调了它作为接口和抽象类的结合体,允许动态混入和叠加特质。接着讨论了嵌套类及其在Scala中的使用,特别是类型投影的概念。最后,探讨了Scala的隐式转换,包括隐式函数、隐式值和隐式类,以及它们如何扩展类的功能和处理类型转换。
摘要由CSDN通过智能技术生成

1.Scala 特质

   从面向对象来看,接口并不属于面向对象的范畴,而Scala纯面向对象的语言,所以在Scala中没有接口。Scala语言中,采用特质trait(特征)来代替接口的概念,也就是说,多个类具有相同的特征时,就可以将这个特质独立出来,采用关键字trait明。 trait 等价于(interface + abstract class) 

1.1 trait 的声明语法

      trait 特质名 {

          trait

      }

   在 Scala 的 trait 中,它不但可以包括抽象方法、字段还可以包含普通字段和具体方法。在Scala中实现特质,如果没有继承其它类,那么实现第一个特质使用 extends 关键字,后面的使用 with 关键字,Scala中的特质可以多实现扩展,多个特质之间使用 with 关键字进行连接,所以如果你将Scala中的特质看做是一个抽象类或一个普通的类的话,那么相当于Scala间接实现了类的多继承,而如果将特质看成一个接口,那么它跟Java中的接口一样,多个特质之间可以多继承。

 

  Scala继承是单继承,也就是一个类最多只能有一个直接父类,种单继承的机制可保证的纯洁性,c++中的多继承机制简洁。但对子类功能的扩展有一定影响,们认为,Scala引入trait特质,既可以替代Java的接口,  也是对单继承一种补充。

1.2 特质 trait 动态混入 

   除了可以在类声明时继承特质以外,还可以在构建对象时混入特质,扩展目标类的功能。态混入是Scala特有的方式(java没有动态混入),可在不修改类声明/定义的情况下,即动态混入可以在不影响原有的继承关系的基础上,给指定的类扩展功能,非常的灵活,耦合性低

1.3 叠加特质trait 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值