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

本文详细介绍了Scala中的trait、class和object的概念及其用法。探讨了trait如何支持部分实现,以及Scala中类的声明与初始化特点。此外,还解释了object作为伴生对象的作用,并通过实例演示了extends与with关键字的应用。

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 的特性。所以他既继承了父类的特性,而且还有其他的特性。

转载于:https://www.cnblogs.com/gxgd/p/8780237.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值