码迷,mamicode.com
首页 > 其他好文 > 详细

关于scala中的class和trait的一些总结

时间:2018-04-10 17:39:18      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:super   back   ima   需要   翻译   array   一个   编译   animal   

trait:

字面意思是特质或者特征,这个词翻译成特征比较合适。它的意义和java,c#中接口很类似。但是trait支持部分实现,也就是说可以在scala的trait中可以实现部分方法。

在scala中也是一般只能继承一个父类,可以使用with进行多重继承;

class:

Scala类和java类中有些区别,在Scala声明private变量会Scala编译器会自动生成get,set,在Scala中变量是需要初始化的,如果不声明private默认是public的

object:

Scala中没有静态修饰符,static,在object下的成员全部都是静态的,如果在类中声明了与该类相同的名字的object则该object是该类的“半生对象”,可以理解把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始化的操作

下面介绍一下,extends和with的关系:(具体看代码)object ClassAnd    trait Pet{ //相当于java 中的一个接口,但是他可以有自己的方法体

    def greet()="hello"
}
class Dog extends Pet{
override def greet(): String = "hello dog"
}
class Yellowdog extends Dog{
override def greet(): String = "I am a yellowdog"
}
trait Animal extends Pet{
override def greet(): String = super.greet()+"!"
}

def main(args: Array[String]): Unit = {
var pet=new Dog
println( pet.greet())
pet=new Dog with Animal
println(pet.greet())

}
}
输出结果:
hello dog
hello dog!
看到这个结果,明显看的出来,dog这个 对象除了自己方法的特性,还拥有Animal 的特性。所以他既继承了父类的特性,而且还有其他的特性。

关于scala中的class和trait的一些总结

标签:super   back   ima   需要   翻译   array   一个   编译   animal   

原文地址:https://www.cnblogs.com/gxgd/p/8780237.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!