Scala入门之面向接口编程

本文介绍了Scala中的trait,它类似Java接口但支持部分实现。讲解了trait的定义、使用方式,包括单继承与多继承,并通过代码示例展示了trait的重写与多继承。此外,对比了trait与接口、抽象类的区别,并探讨了SparkContext如何使用trait实现功能扩展。
摘要由CSDN通过智能技术生成

##一、scala中trait的定义
这里的trait字面意思是特质或者特征,这个词翻译成特征比较合适。它的意义和java,c#中接口很类似。但是trait支持部分实现,也就是说可以在scala的trait中可以实现部分方法。
##二、scala中trait的使用
一个类继承不管继承的是抽象类还是接口,都是用extends关键字,而对于多继承时用的是with关键字连接起来,其实背后是这样读的:
extends (类或接口with接口with接口with接口with接口with接口with接口with接口with接口….)
它是把后面做为一个整体来看。
抽象属性可以不赋值,但是得写类型,scala是一门静态语言,如 val name: String
//声明一个 trait
trait TraitBase{
def add(x:Int,y:Int): Int ={
return x+y
}
}
//TraitTest 继承自 TraitBase
class TraitTest extends TraitBase{
//重写父类的方法
override def add(x:Int,y:Int): Int ={
return x+y*10
}
}

//如果需要调用父类的方法,使用super访问父类
class TraitTest extends TraitBase{
override def add(x:Int,y:Int): Int ={
return super.add(x,y)*10
}
}

//使用
val test = new TraitTest
println(test.add(4,5))

//对于多重继承,使用 with 关键字
trait A{
def FA(): Unit ={
println(“FA”)
}
}
trait B{
def FB(): Unit ={
println(“FB”)
}
}
class C{
val content=null
}
//多重继承
class D extends C with A with B{
//这里不需要必须实现trait中的方法,因为已经实现了
}

*//混入:混入trait的数量可以是任意的。用关键字with可以混入更多的trait。如果类已经继承了类,就可以
//使用with混入trait。*
trait Friend {
val name: String
def listen() = println(“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值