抽象类

23 阅读2分钟

(一) 抽象类的定义和实现

(1)理解抽象类

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

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

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

(2)定义抽象类

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

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

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

package level02

//抽象类  abstract
//   1.不能new,无法实例化
//   2.充当其他类的父类,抽象的方法和属性在子类中具体去实现

//class, 抽象?
//      稳定的工作(抽象)

//        老师,公务员,医生(具体)
object class15{
  abstract class Job() {
    // 具体属性
    var name:String = "小花"

    // 具体方法:
    def hello():Unit = {
      println("hello...")
    }

    //  抽象的属性:它没有具体的属性
    var age:Int
    //  抽象的方法:没有方法
    def sayHello():Unit
  }


  def main(args: Array[String]): Unit = {
  new Job()  //不能运行,返回值会报错
  }

}

2. 抽象类的继承

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

package level02

//抽象类  abstract
//   1.不能new,无法实例化
//   2.充当其他类的父类,抽象的方法和属性在子类中具体去实现

object class16{

  abstract class AICar() {

    //抽象的属性, 没有属性,是抽象的
    var typeTh:String

    //  抽象的方法
    def autoRun():Unit
  }  //标准

  class XiaoMi extends AICar{

    var typeTh="视觉+雷达技术"

    def autoRun():Unit = {
      println(s"小米公司的自动驾驶技术")
    }
  }  //实现这标准


  def main(args: Array[String]): Unit = {
    val su7 = new XiaoMi()  //生成对象

    su7.autoRun()
  }

}

3. 抽象类的重写

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