说明
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+" 打电话")
}
}
继承 和 重写
如果父类为抽象类,那么子类需要将 抽象属性 和 抽象方法 实现,否则子类也需声明为 抽象类
实现抽象方法,可以不加
override实现抽象属性,可以不加
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","学不动了") //覆盖父类的方法
}
}