Scala不仅有抽象方法的概念,还有抽象属性的概念。
抽象属性: 声明而没有赋初值的属性。
抽象方法: 声明了方法而没有方法体。
抽象类中不仅可以有抽象属性和抽象方法,也可以有非抽象属性和非抽象方法。
object Scala01_Abstract {
def main(args: Array[String]): Unit = {
val stu = new Student01
println(stu.name)
println(stu.age)
stu.sleep()
stu.eat()
}
}
// 抽象类中既可以有抽象属性和抽象方法,也可以有非抽象属性和非抽象方法
abstract class Person01 {
// 抽象属性,声明却不赋值
var name: String
// 抽象方法,声明却没有方法体
def eat(): Unit
// 非抽象属性
val age: Int = 18
// 非抽象方法
def sleep() {
println("Person sleep")
}
}
// 子类继承抽象类
class Student01 extends Person01 {
// 重写抽象属性和抽象方法,可以不加override
var name: String = "Li Ming"
def eat(): Unit = {
println("Student eat")
}
// 重写非抽象属性和非抽象方法,必须加override
// 重写的非抽象属性必须是由val修饰的
override val age: Int = 21
override def sleep(): Unit = {
println("Student sleep")
}
}
注意: