您的位置:首页 > 大数据

大数据系列修炼-Scala课程13+14

2016-08-12 16:20 525 查看
核心内容:

1、作为接口的trait代码实战

2、在对象中混入trait代码实战

1、作为接口的trait代码实战
1、scala中的trait(特质)功能很强大,Java中抽象类能做的事情,trait都可以做。Java中接口能做的事情,trait也可以做,它的长处在于可以多继承—即trait既可以当做接口来用,也可以当做抽象类来用.

2、在Java当中,接口(interface)就是抽象方法和数值型常量的集合,不能有普通方法,但是在scala当中,trait中可以有普通方法

3、在Java当中,接口只能被实现,不能被继承,但是在scala当中,特质trait可以被继承,如果是第一次使用trait,并且trait前面没有其它的类或者抽象类,就需要使用extends关键字,而后使用with关键字(注意:不是implements关键字)

class A extends B with C   //其中B与C为特质


代码实现:何为特质trait

我们的例子中定义了一个抽象类Aminal表示所有的动物,然后定义了两个trait :Flyable和Swimable分别表示会飞和会游泳两种特征;然后我们定义一种动物鱼鹰 FishEagle,它既会飞也会游泳.

object App6
{
def main(args:Array[String]):Unit=
{
val fishEagle = new FishEagle()

fishEagle.breath
fishEagle.walk(60)
fishEagle.fly()
fishEagle.swim()
}
}
abstract class Animal
{
def walk(speed:Double)
def breath()=
{
println("animal need breathes!")
}
}
trait Flyable   //定义一个特质:表示会飞的特征
{
def fly()
}
trait Swimable  //定义一个特质:表示会游泳的特征
{
def swim()
}
class FishEagle extends Animal with Flyable with Swimable   //FishEagle继承了一个抽象类并实现了两个特质
{
def walk(speed:Double)={println("fish eagle walk with speed:" + speed)}
def fly()=  //实现特质中的方法
{
println("fish eagle can fly!")
}
def swim()= //实现特质中的方法
{
println("fish eagle can swim!")
}
}


运行结果:

animal can breathes!
fish eagle walk with speed:60.0
fish eagle can fly!
fish eagle can swim!


2、在对象中混入trait代码实战
1、在scala中,通过trait我们可以将一些具体实现的方法混入到我们的类或对象中.(注意:创建对象时混入特质,要重写trait中的抽象方法 )

代码实例:

object App6
{
def main(args:Array[String]):Unit=
{
val fishEagle = new FishEagle()  with FlySwim  //混入一个特质
fishEagle.breath()
fishEagle.walk(60.0)
fishEagle.fly()
fishEagle.swim()
}
}
abstract class Animal
{
def walk(speed:Double)
def breath()=
{
println("animal can breathes!")
}
}
trait Flyable
{
def fly()
}
trait Swimable
{
def swim()
}
trait FlySwim extends Flyable with Swimable  //接口实现多继承
{
def fly()=
{
println("fish eagle can fly!")
}
def swim()=
{
println("fish eagle can swim!")
}
}
class FishEagle extends Animal
{
def walk(speed:Double)={println("fish eagle walk with speed:" + speed)}
}


运行结果:

animal can breathes!
fish eagle walk with speed:60.0
fish eagle can fly!
fish eagle can swim!


如有问题,欢迎留言指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: