首页  

Scala 抽象类(abstract) 和 特质(trait) 异同     所属分类 scala 浏览量 635
定义抽象/具体 方法 和 字段
可用匿名子类实例化

抽象类 支持 构造函数和辅助构造函数 可传递参数 
特质 不支持 构造参数

单继承 ,只能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那些事