文档章节

Scala中的Trait

mOnsoOn1360
 mOnsoOn1360
发布于 2016/07/04 15:22
字数 231
阅读 2
收藏 0

trait相当Java中的interface. 与interface不同的是,  trait可以编写默认实现, 而interface不可以。

trait Similarity {
  def isSimilar(x : Any) : Boolean
  def isNotSimilar(x : Any) : Boolean = !isSimilar(x)
}

在这个例子我们定义了一个接口 Similarity, 它有两个方法isSimilar和isNotSimilar。 并且在isNotSimilar方法中我们实现了它。

class Point(xc : Int, yc : Int) extends  Similarity {
  var x = xc;
  var y = yc;

  override def isSimilar(obj: Any): Boolean =
    obj.isInstanceOf[Point] &&
    obj.asInstanceOf[Point].x == x;
}


object TraitTest extends  App {
  var p1  =  new Point(2, 3)
  var p2  = new Point(2, 4)
  var p3  = new Point(3, 3)
  println(p1.isNotSimilar(p2))
  println(p1.isNotSimilar(p3))
  println(p1.isNotSimilar(2))
}

接下来我们定义Point类继承Similarity, 并且实现自定义的isSimilar方法。

 

总结:

1) trait类似于java中的interface,  不同的是我们可以在trait中实现方法

2) scala中可以不以;作为一段代码的结尾

3) 在scala的类中直接定义构造函数,如上面的class Point(xc : Int, yc : Int)

 

© 著作权归作者所有

共有 人打赏支持
mOnsoOn1360
粉丝 4
博文 10
码字总数 3338
作品 0
合肥
程序员
私信 提问
Scala简单编程

1. Scala简单概述 Scala是多范式编程语言,其设计的初衷是要集成面向对象编程和函数式编程以及各种特性. 需要说明的一点是: Scala是基于java平台(JVM) ,并兼容现有的Java程序 下面是Scala官方...

得失与否
2018/01/01
0
0
关于Scala多重继承的菱形问题

在Scala中的trait中引入了混入的概念,即Mixin of trait。 什么是混入(mixin) 可能翻译不准确,有人也称之为混入类(mixins),混入是一种组合的抽象类,主要用于多继承上下文中为一个类添加...

Barudisshu
2015/05/25
0
1
Scala中trait的使用详情

单基础多实现,但是接口只能包含抽象方法,不能包含字段。 trait可以同时拥有抽象方法和具体方法,而类可以实现多个trait。 做接口使用的trait trait Logger{ } 不需要将方法声明为abstract—...

LC900730的博客
2017/12/18
0
0
Scala&Android下的开发trait经验分享

前一段时间写了一个在Android中加入AdMob的博客,详见http://my.oschina.net/noahxiao/blog/61987 还有一个用Scala开发Android应用-使用trait与implicit优化Activity,详见http://my.oschina...

NoahX
2012/06/19
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第2小节(2)

3,动手实战Scala中的抽象类 抽象类的定义需要使用abstract关键字: 上面的代码定义并实现了抽象方法,需要注意的是我们把直接运行的代码放在了App这个trait的子类中,关于App内部帮助我们实...

Spark亚太研究院
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

总结:volatile关键字

实现内存可见性原理: 对volatile变量执行写操作时,会在写操作之后加入一条store指令,将CPU缓存数据强制刷新到主内存中 对volatile变量执行读操作的时候,会在读操作前加入一条load指令,重...

浮躁的码农
30分钟前
0
0
OSChina 周六乱弹 —— 看见这花臂了么?赶紧叫大佬!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享周华健的单曲《有没有一首歌会让你想起我》 《有没有一首歌会让你想起我》- 周华健 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
119
4
Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
3
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部