- 特质:trait
- 作用:类似于抽象类 定义抽象属性 方法让其他的子类去实现
- 特点:可以实现多继承类
- 多继承时构造器调用顺序
- 先父后子 先调用父类构造器 再调用子类构造器
- 有多个父类 从左到右的顺序去调用构造器
package level02
object class21{
trait A {
println("trait A")
}
trait B {
println("trait B")
}
trait C {
println("trait C")
}
class Class1 extends B with A with C{
println("class1...")
}
def main(args: Array[String]): Unit = {
new Class1()
}
}
- 可以被继承 extends
- 属性和方法:抽象属性 具体属性 抽象方法 具体方法
- 都不能被实例化 不能new
- trait 支持多继承 抽象类不能多继承
package level02
import java.io.FileWriter
object class23{
trait Log {
var fileName:String
println(s"${fileName}")
lazy val fileWriter:FileWriter = new FileWriter(fileName)
def writeLog(msg:String):Unit ={
fileWriter.write(msg)
fileWriter.close()
}
}
class TextLog extends Log{
var fileName: String = "text02.log"
}
def main(args: Array[String]): Unit = {
val textLog = new TextLog()
textLog.writeLog("2015-11-19:下午天气晴朗")
}
}