百度云: http://pan.baidu.com/s/1jGjFpWy
腾讯微云: http://url.cn/TnGbdC
360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2
DT大数据梦工厂 温故而知新 之15讲scala 中的特质的多继承
package TestPractice
/**
* @author Administrator
*/
object TraitMoreExtendDemo {
def main(args: Array[String]): Unit = {
//创建对象
val v1 = new ZZ
//使用对象
v1.t1
println(v1.name + "\t" + v1.age)
}
}
trait AA {
val name = "aa"
var age: Int
def t1: Unit = {
println("AA t1....")
}
}
trait BB {
val name = "bb"
var age: Int
def t1: Unit = {
println("BB t1....")
}
}
class ZZ extends Object with AA with BB {
//重写冲突成员常量
override val name = "zz"
//重写冲突成员变量,必须是抽象的成员变量才能重写,具体的成员变量不能重写
override var age: Int = 10
//重写冲突成员方法
override def t1: Unit = {
println("ZZ t1....")
}
}
总结 :
如果一个类混入的多个特质,切这些特质中有同名方法,造成冲突
那么解决这个方法冲突的办法是重写冲突的方法。(冲突变量也是如此)
抽象方法和抽象字段都必须重写,因此它们中有冲突的成员字段和成员方法
其解决办法也是重写