大数据全系列 教程
1869个小节阅读:464.8k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
如果一个类即继承了父类,又混入多个特征,执行顺序又是如何呢?
xxxxxxxxxx
package com.itbaizhan.chapter05
object TraitDemo4 {
trait XDao{
println("trait X...")
}
class Father{
println("class father")
}
class Son extends Father with XDao{
println("son....")
}
//TODO 2.如果混入多个特征又会怎样?
trait YDao{
println("trait Y...")
}
//初始化执行顺序问题:父类 ->特征XDao->特征YDao -> 本类
class Son2 extends Father with XDao with YDao{
println("son2....")
}
def main(args: Array[String]): Unit = {
//TODO 1.初始化执行顺序问题:父类 ->特征 -> 本类
//new Son()
new Son2()
}
}
更复杂的情况:
xxxxxxxxxx
package com.itbaizhan.chapter05
object TraitDemo4 {
//旧代码省略......
trait ZDao extends YDao {
println("trait Z...")
}
//初始化执行顺序问题:父类 ->特征YDao->特征ZDao -> 本类
class Son3 extends Father with ZDao{
println("son3....")
}
//由于先with ZDao(而ZDao extends YDao)所以:父类 ->特征YDao->特征ZDao
//再次with YDao时,由于YDao以及初始化过了,而且只初始化一次,所以不再初始化
//得出初始化执行顺序问题:父类 ->特征YDao->特征ZDao -> 本类
class Son4 extends Father with ZDao with YDao{
println("son4....")
}
def main(args: Array[String]): Unit = {
//new Son3()
new Son4()
}
}
如果父类也混入了特征呢?
父类特征 ->父类 ->特征1->特征2 -> 本类