scala教程:抽象类

说明

scala中的抽象类,与java有些类似,有抽象方法、抽象属性(Java没有此概念)

抽象类

只有抽象类才能有 抽象属性 和 抽象方法

不能创建对象,即不能实例化

通过 abstract 关键字标记抽象类

abstract class Phone{

}

抽象属性

定义属性,但 没有初始化,就是抽象属性

val|var 属性名:类型

抽象方法

只声明,但没有方法体,就是抽象方法

def 方法名(形参):返回值类型

例子

abstract class Phone {
  //抽象属性
  val cpu:String
  //属性
  val ram:Int = 8
  //抽象方法
  def call(num:String):Unit
  //方法
  def sms(num:String,text:String):Unit = {
    println("用 "+cpu+" 给 "+num+" 打电话")
  }
}

继承 和 重写

  1. 如果父类为抽象类,那么子类需要将 抽象属性 和 抽象方法 实现,否则子类也需声明为 抽象类

  2. 实现抽象方法,可以不加 override

  3. 实现抽象属性,可以不加 override

例子

class IPhone extends Phone {
  //重写抽象属性,可以不写 override
  val cpu:String = "A15"

  //重写抽象方法,可以不写 override
  def call(num:String):Unit = {
    println("子类===用 "+cpu+" 给 "+num+" 打电话")
  }
}

object Phone{
  def main(args: Array[String]): Unit = {

    val phone:Phone = new IPhone //
    println(phone.cpu) //
    println(phone.ram) //
    phone.call("120") //覆盖父类的方法
    phone.sms("110","学不动了") //覆盖父类的方法

  }
}

原文出处:/show_1IX1DESt7Awm.html