①只有抽象方法的trait
②只有抽象成员和方法的trait
③具体成员的变量和方法
④对象继承特质
例子:
//定义一个特质
//特质可以有抽象属性,具体属性,抽象方法,具体方法
trait Beauty {
//抽象方法
val hair: String
//具体属性
var age = 18
val height = 180 //val不可以修改 var可以修改
//抽象方法(没有=)
def smile
//具体方法
def say(): Unit = {}
}
class Boy extends Beauty{
//抽象属性 要具体实现
val hair = "短发"
//具体属性可以重写(可选)
// var 修饰的 可以直接赋值
// val 修饰的 可以用override重写
override val height =178
age = 20
//抽象方法 要具体实现
def smile(): Unit ={
println(s"嘴角微微扬起")
}
//具体方法可以重写(可选)
override def say(): Unit ={
println(s"${age}岁,${height}大高个,${hair}")
}
}
object Test21 {
def main(args: Array[String]): Unit = {
val b1 = new Boy()
b1.say()
}
}
标签:val,Scala,trait,用法,抽象,Unit,def,属性
From: https://blog.csdn.net/2402_83403264/article/details/143162858