Scala 抽象类(abstract) 和 特质(trait) 异同
所属分类 scala
浏览量 644
定义抽象/具体 方法 和 字段
可用匿名子类实例化
抽象类 支持 构造函数和辅助构造函数 可传递参数
特质 不支持 构造参数
单继承 ,只能extends 一个抽象类
可 with 扩展 多个 trait
extends 可用于 抽象类 和 特质,with 只能用于特质
扩展 多个 特质 ,第一个用 extends
优先使用特质 可扩展多个特质
如需要构造函数参数,使用抽象类 ,特质有无参构造
子类重写非抽象成员 必须加上 override 关键字
package demo2
abstract class Car {
val name: String = "car"
// 定义抽象属性
val brand: String
def description() = {
println(s"Car.description() , name=${name} , brand=${brand}")
}
// 抽象方法
def run(): Unit
}
class BigCar extends Car {
// 子类重写非抽象成员,必须加 override
override val name: String = "tiger"
// 子类重写抽象成员,可不加 override
val brand: String = "bigCar"
// 子类重写非抽象方法 必须加 override
override def description(): Unit = {
super.description()
println(s"${brand} ${name}")
run()
}
def run(): Unit = {
println("BigCar.run()")
}
}
object CarDemo {
def main(args: Array[String]): Unit = {
val car = new BigCar
car.description()
}
}
https://gitee.com/dyyx/hellocode/blob/master/demo/scala/scalademo/src/main/java/demo2/CarDemo.scala
scala 类继承实例
上一篇
下一篇
scala Promise
Scala并发之 Future ExecutionContext
scala type 关键字
typesafe config 读取配置
对象存储简介
scala那些事