文档章节

Scala学习之类和属性篇(六):对象私有成员变量

阿拉德大陆的魔法师
 阿拉德大陆的魔法师
发布于 2016/12/10 15:20
字数 299
阅读 155
收藏 0

在Scala中,使用private关键字修饰的成员变量只可以被这个类的实例访问。也就是说,这个类的任意一个实例都可以访问这个类在任意实例中定义的私有成员变量。

下面这个例子中,isHigher方法就引用了此类的其他实例中的price变量。

scala> :paste
// Entering paste mode (ctrl-D to finish)

class Stock {
  private var price: Double = _
  def setPrice(p: Double) {price =p}
  def isHigher(that: Stock): Boolean = {this.price > that.price}
}

// Exiting paste mode, now interpreting.

defined class Stock

scala> val s1 = new Stock()
s1: Stock = Stock@72f46e16

scala> val s2 = new Stock()
s2: Stock = Stock@791cbf87

scala> s1.setPrice(10)

scala> s2.setPrice(50)

scala> s1.isHigher(s2)
res2: Boolean = false

那么我们如何定义对象私有的成员变量呢,那就是使用private[this]关键字。这时候,成员变量就只能在对象的实例内部来访问。在同类的其他实例中就不能再引用这个成员变量了。

scala> :paste
// Entering paste mode (ctrl-D to finish)

class Stock {
  private[this] var price: Double = _
  def setPrice(p: Double) {price =p}
  def isHigher(that: Stock): Boolean = {this.price > that.price}
}

// Exiting paste mode, now interpreting.

<console>:15: error: value price is not a member of Stock
         def isHigher(that: Stock): Boolean = {this.price > that.price}

 

© 著作权归作者所有

阿拉德大陆的魔法师
粉丝 27
博文 91
码字总数 83019
作品 0
西城
程序员
私信 提问
加载中

评论(1)

KimSoHyun
KimSoHyun
henhao
Scala学习目录

字符串篇 1.1 字符串的比较 1.2 使用多行字符串 1.3 字符串的切分 1.4 插值函数 1.5 逐字符处理字符串 1.6 使用正则表达式 1.7 访问字符串特定位置的字符 1.8 使用隐式方法来扩展字符串类 2....

阿拉德大陆的魔法师
2016/04/20
367
0
Scala 学习一

1.IDEA新建scala相关文档 https://www.jetbrains.com/help/idea/2016.3/creating-and-running-your-scala-application.html 2.Scanla 变量 变量的类型在变量名之后等号之前声明。定义变量的类...

Zhao-Qian
2016/12/16
45
0
scala学习(三)

scala类: scala中类定义里,可以放置字段和方法,这些被统称为成员(memeber) 所有成员默认是共有的,如java中默认带public一样 scala中不能定义静态成员,但是可以定义单例对象,用法java的...

如风达
2015/09/07
80
0
Scala学习之类和属性篇(三):单例与私有构造函数

我们知道,要想使用单例那么就必须定义私有构造函数来防止从类的外部来创建类的实例。在Scala中你也可以通过private关键字定义类的私有主构造函数来防止从类的外部创建类的实例。 你可能发现...

阿拉德大陆的魔法师
2016/12/09
77
0
浅析Scala单例对象与伴生类

Scala的单例对象 Scala不能定义静态成员,而是代之定义单例对象(singleton object)。以object关键字定义。 对象定义了某个类的单个实例,包含了你想要的特性: 当你在应用程序中需要一个新的...

qq_39521554
2018/05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向海量数据的极致成本优化-云HBase的一体化冷热分离

前言 随着业务的持续发展,业务数据库存储量会持续增长。通常数据量过亿时,就需要考虑做分库分表,或者选择扩展能力更好的NOSQL/NewSQL数据库,如HBase就可以单表支持PB级数据,足够满足大多...

阿里云官方博客
36分钟前
4
0
最新最全国内外架构开源技术干货资料

大家好,废话不多说,整理了精心收集了各类资源。 声明,如侵犯个人利益,请联系小编,会立即删除相关资料。 领取方式在文末 求转发列表 好了,由于资源太多啦,就不一一列举了。 大家按照下...

泥瓦匠BYSocket
38分钟前
6
0
springmvc jsp访问不了css

在jsp中引入css,一直报404错误,直接访问css,也无法访问 将css文件移出WEB-INF,因为处于安全性考虑,这个目录禁止外部访问。 当引用css时,可以直接用绝对路径${pageContext.request.conte...

沉迷于编程的小菜菜
40分钟前
4
0
android 系统版本 9.1网络请求遇到坑

网络请求异常: E/http: CLEARTEXT communication to plat.xunlinkeji.cn not permitted by network security policy 在res下新建一个xml目录 创建名为network_security_config.xml 文件 ,该......

MrLins
58分钟前
5
0
Istio 1.3 发布,HTTP 遥测不再需要 Mixer

> 原文链接:Istio 1.3 发布,HTTP 遥测不再需要 Mixer Istio 是 Google、IBM 和 Lyft 联合开源的服务网格(Service Mesh)框架,旨在解决大量微服务的发现、连接、管理、监控以及安全等问题...

米开朗基杨
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部