抽象类(1)

40 阅读2分钟

(一) 理解抽象类

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

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

代码演示:

object practice45 {
  /*
  *  抽象类 abstract
  *   1. 一个抽象类(加了abstract修饰的),不能被new。
  *      一个类不能直接用来创建对象,那么这个类具体有什么用呢?做别人的父亲!
  **/

  abstract  class AICar {
    def autoDriver(): Unit = {
      println("具体方法,自动驾驶......")

    }
  }

    class SU7 extends AICar{

  }

  def main(args: Array[String]): Unit = {
    val su = new SU7()
    su.autoDriver()

  }
}

结果为:具体方法,自动驾驶......

定义抽象类

代码演示(定义一个智能汽车类):

object practice45 {
  /*
  *  抽象类 abstract
  *   1. 一个抽象类(加了abstract修饰的),不能被new。
  *      一个类不能直接用来创建对象,那么这个类具体有什么用呢?做别人的父亲!
  *   2.可以定义的抽象方法,在子类中去实现
   */


  abstract  class AICar {
    // 抽象方法:没有具体的函数代码
    def autoEn():Unit

    def autoDriver(): Unit = {
      println("具体方法,自动驾驶......")

    }
  }

    class SU7 extends AICar{

      override def autoEn(): Unit = {
        println(s"采用小米独家的无线充电技术,停车就可以充电")
      }
    }

  def main(args: Array[String]): Unit = {
    val su = new SU7()
    su.autoEn()

  }
}

结果为:采用小米独家的无线充电技术,停车就可以充电

(三) 继承抽象类

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

代码演示:

object practice46 {
  /*
  *  抽象类 abstract
  *   1. 一个抽象类(加了abstract修饰的),不能被new。
  *      一个类不能直接用来创建对象,那么这个类具体有什么用呢?做别人的父亲!
  *   2.可以定义的抽象方法,在子类中去实现
  *
  *   3.一个抽象类中可以有:
  *     1.具体属性 val name:String = "小明"
  *     2.具体方法
  *
  *     3.抽象属性 没有具体值的属性,只有属性名和类型
  *     4.抽象方法
  *
   */
  abstract class AICar() {
    val name:String

    def autoRun():Unit
  }

  class xiaoMi extends AICar {
    val name:String = "xiaoMi"
    def autoRun():Unit = {
      println("小米汽车,自动驾驶......")
    }

  }


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

  }
}

父类AICar中既有抽象属性name,又有抽象方法autoRun(),这些在子类中都要去实现