/**
* 抽象类抽象字段抽象方法 必须用abstract修饰
*/
class AbstractClassOps {
var id : Int = _ // 此处 变量必须初始化(或者赋值)或者是使用占位符 不然的话就只能使用abstract 进行修饰
// val id : Int = _ 此处就会直接报错 (var才可以使用占位符,因为val定义之后不可变)
}
/**
* 如何声明抽象字段: 当字段只进行声明 不进行初始化的话这就是抽象字段
*/
abstract class SuperTeacher(val name : String){
var id : Int // 这里是抽象类 所以变量就不用初始化
var age : Int
def teach
}
class TeacherForMath(name : String ) extends SuperTeacher(name){
override var id = name.hashCode()
override var age = 25 // 重写 姓名等
override def teach{
println("Teaching math!!!")
}
}
object AbstractClassOps {
def main(args: Array[String]): Unit = {
val teacher = new TeacherForMath("Spark")
teacher.teach
println("teacher.id :" + teacher.id + " teacher.name :"+teacher.name)
println(teacher.age)
}
}