抽象类的重写

44 阅读1分钟

image.png 重写要点:

(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)
  }
}