重写要点:
(1)抽象类中的方法可以有抽象的和非抽象的,同样属性也可以有抽象的和非抽象的。
(2)抽象方法可以实现,而非抽象方法可以继承或重写。
(2)属性中对于抽象成员是必须要实现的,而非抽象成员可以继承或重写。
对var的属性直接覆盖
对于val的属性,要添加override
详情
package level02
/*
* 3.一个抽象类中可以有:
* 1.具体属性 val name:String = "小米"
* 2.具体方法
*
* 3.抽象属性 val name:String 没有具体的属性。只有属性名和类型。它必须写在抽象类中
* 4.抽象方法 def autoRun():Unit
* 在子类中,要有具体的实现。
* */
object class09 {
abstract class AICar() {
// 1. 具体属性
var name: String = "car"
val color: String = "black"
// 2. 具体方法
def run(): Unit = {
println("run.....")
}
// 3. 抽象属性,没有属性值
var price: Double
// 4. 抽象方法,没有方法体
def autoRun(): Unit
}
class XiaoMI extends AICar{
// 重写
//1.具体属性
name = "小米"//对var的属性直接覆盖
override val color: String = "流光紫"//对于val的属性,要添加override
//2.具体方法
override def run(): Unit = {
println("小米 run.....")
}
//实现
//3.实现 抽象属性
var price = 28.8
//4.实现 抽象方法
def autoRun(): Unit = {println("小米自动驾驶")}
}
def main(args: Array[String]): Unit = {
var c1 = new XiaoMI()
c1.autoRun()
c1.run()
println(c1.name)
println(c1.color)
}
}