抽象类

2 阅读2分钟

(一)理解抽象类

类本身就是对对象的抽象,抽象类就是对类的抽象,就是一种更加模糊的类。

定义:抽象类是一个包含一个或多个抽象方法的类。抽象方法是不带任何实现的方法。抽象类也可以包含具体的方法和属性。

目的:抽象类的主要目的是为子类提供公共的接口和部分实现,并确保子类实现抽象方法。

(二)定义抽象类

定义一个Scala的抽象类:abstract class A{ }。

定义抽象属性:var|val 属性名:类型 一个属性没有初始化,没有值

定义抽象方法:def 方法名():String 只声明没有实现方法

(三)继承抽象类

子类继承了抽象类,它就必须去实现所有抽象属性和抽象方法

重写要点:

(1)抽象类中的方法可以有抽象的和非抽象的,同样属性也可以有抽象的和非抽象的。

(2)抽象方法可以实现,而非抽象方法可以继承或重写。

(2)属性中对于抽象成员是必须要实现的,而非抽象成员可以继承或重写。

package kkk02

/*
* 3、一个抽象类中可以有:
* 1.具体属性 val name:String = "小米"
* 2.具体方法 def autoRun():Unit = {}
* 3.抽象属性: val name:String 没有具体值的属性 只有属性名和
* 4.抽象方法: def autoRun():Unit
* 在子类中,要具体的实现。
*/

object csy11 {

    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. 实现 抽象方法
      def autoRun():Unit = { println("小米自动驾驶") }
    }

  def main(args: Array[String]): Unit = {
    var c1 = new XiaoMi()
    c1.autoRun()
    c1.run()
    println(c1.name)
    println(c1.color)
  }
}