Scala中特质trait与抽象类abstract的区别

转载 2016年05月30日 21:19:51

来源:https://twitter.github.io/scala_school/zh_cn/basics.html

什么时候应该使用特质而不是抽象类? 

如果你想定义一个类似接口的类型,你可能会在特质和抽象类之间难以取舍。这两种形式都可以让你定义一个类型的一些行为,并要求继承者定义一些其他行为。一些经验法则:

  • 优先使用特质。一个类扩展多个特质是很方便的,但却只能扩展一个抽象类。
  • 如果你需要构造函数参数,使用抽象类。因为抽象类可以定义带参数的构造函数,而特质不行。例如,你不能说trait t(i: Int) {},参数i是非法的。

你不是问这个问题的第一人。可以查看更全面的答案: stackoverflow: Scala特质 vs 抽象类 , 抽象类和特质的区别, and Scala编程: 用特质,还是不用特质?

相关文章推荐

scala的抽象类、抽象字段、抽象方法

1.抽象类是声明用abstract 2.方法是抽象方法 在抽象类中只需要定义方法,没有实现 3.字段是抽象方法 在抽象类中不给字段进行赋值 4.代码 package...

scala入门-06抽象类(abstract)的使用

scala入门-06抽象类(abstract)的使用 scala入门-06抽象类(abstract)的使用

Scala 抽象类

Scala抽象类不能被实例化,包含若干定义不完全的方法,具体的实现由子类去实现。
  • yyywyr
  • yyywyr
  • 2015-12-07 21:39
  • 1407

Scala:trait

Scala中对trait的处理
  • bdmh
  • bdmh
  • 2015-12-14 14:00
  • 1529

scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld

scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld

SCALA_IDE开发Spark程序

IDEA Eclipse 下载scala 下载地址 scala.msi scala环境变量配置 (1)设置SCALA-HOME变量:如图,单击新建,在变量名一栏输入: SCALA-HO...

scala学习之路:10. Abstract抽象类抽象字段抽象方法

/** * 抽象类抽象字段抽象方法 必须用abstract修饰 */ class AbstractClassOps { var id : Int = _ // 此处 变量必须初始化...

Scala学习笔记12【继承、抽象类、trait实战】

Scala 继承代码示例:class Father(val name: String, val age: Int){ println("Father is here.") val school ...

scala入门-07特质类(trait)的使用

scala入门-07特质类(trait)的使用 scala入门-07特质类(trait)的使用 scala入门-07特质类(trait)的使用

什么是接口?接口有哪些好处,抽象类(abstract)和接口(interface)的区别

什么是接口?   接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为   接口是这样定义的: 接口,里面包含方法,但是没有方法的具体实现。   然后在继...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)