抽象类

72 阅读2分钟

定义抽象类

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

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

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

继承抽象类

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

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

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

package level02

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

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

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

    // 在子类中,一定要去实现父类的所有抽象方法
    class SU7 extends AICar {

      // 使用override 去实现这个方法
      override def autoEn(): Unit = {
        println("采用小米独家的无线充电技术,停车就可以充电")
      }
    }

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

image.png

抽象类 abstract

    1. 一个抽象类(j加了abstract),不能被new。
  • 一个类不能直接用来创建对象,那么这个类具体有什么用呢? 做别人的父类!
  • 2.可以定义抽象方法,在子类中去实现
  • 3.一个抽象类中可以有:
  • 1.具体属性 val name:String = "小米"
  • 2.具体方法
  • 3.抽象属性 val name:String 没有具体的属性。只有属性名和类型。它必须写在抽象类中
  • 4.抽象方法 def autoRun():Unit 在子类中,要有具体的实现。
package level02

/*
* 抽象类 abstract
* 1. 一个抽象类(j加了abstract),不能被new。
*    一个类不能直接用来创建对象,那么这个类具体有什么用呢? 做别人的父类!
* 2.可以定义抽象方法,在子类中去实现
*
* 3.一个抽象类中可以有:
*   1.具体属性  val name:String = "小米"
*   2.具体方法
*
*   3.抽象属性  val name:String 没有具体的属性。只有属性名和类型。它必须写在抽象类中
*   4.抽象方法  def autoRun():Unit
*              在子类中,要有具体的实现。
* */
object class08 {

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

}