抽象类(2)

32 阅读1分钟

(一) 抽象类重写

如果子类中对抽象类中的方法定义不满意,仍可以使用override去覆盖的。

重写时具体属性,方法和抽象属性,方法要一一重写

代码演示:

abstract class AICar() {
    // 1.具体属性
    var name:String = "car"
    val color:String = "black"

    // 2.具体方法
    def run():Unit = {
      println("AICar run......")
    }
    // 3.抽象属性,没有属性值
    var price:Double
    // 4.抽象方法,没有方法体
    def autoRun():Unit
  }

  class xiaoMi extends AICar {
    //重写
    //1.具体属性
    name = "小米" //对于var的属性,直接覆盖
    override val color = "流光紫" //对于val的属性,要添加override
    //2.具体方法
    override def run(): Unit = {
      println("小米 run......")
    }
    //实现
    //3.实现 抽象属性
    var price = 28.8

    //4.实现 抽象方法
    override def autoRun(): Unit = {println("小米自动驾驶")}

  }


  def main(args: Array[String]): Unit = {
    var c1 = new xiaoMi()
    c1.autoRun()

  }
}