设为首页收藏本站

小牛社区-大数据学习交流社区|大数据免费学习资源

 找回密码
 立即注册!

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 863|回复: 0

Scala 中的构造器

[复制链接]

3205

主题

3588

帖子

1万

积分

管理员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
15125
发表于 2016-6-12 12:55:08 | 显示全部楼层 |阅读模式
Scala中的构造器相较于Java比较特殊,分为两种:主构造器,从构造器。主构造器是和类中字段和方法的定义混合在一起的。
在Scala中,不需要像Java一样需要在类中定义一个与类名相同的方法来当作构造器。
主构造器的参数列表写在类名的后面,而构造器的内容,则直接写在类定义里面,所以说,一个Scala类里面,除了方法和字段的定义以外的代码,全都是主构造器的内容。
  1. class Fruit(n: String, w: Int) {val name = nval weight = wprintln("This is a " + n)  println("Weight = " + w)}
复制代码
如果接下来定义一个Fruit对象。
  1. val apple = new Fruit("Apple", 10)
复制代码
则会在屏幕上打印:
This is a Apple
Weight = 10
因为
  1. println("This is a " + n)println("Weight = " + w)
复制代码
两行代码也是构造函数中的内容。
除了主构造器外,Scala中还有从构造器,用于使用和主构造器不同的参数来初始化对象。
从构造器的定义,都为def this开始。
例如,如果Fruit的默认重量为10。
  1. class Fruit(n: String, w: Int) {val name = nval weight = wprintln("This is a " + n)println("Weight = " + w)def this(n: String) = this(n, 10)}
复制代码
  1. val orange = Fruit("Orange")
复制代码
Scala上的从构造器也有一定的限制,Scala编程中写道。
“Scala 里的每一个从构造器的第一个动作都是调用同一个类里面其他的构造器。换句话说
就是,每个 Scala 类里的每个从构造器都是以“this(...)”形式开头的。被调用的构造
器既可以是主构造器(好像 Rational 这个例子),也可以是从文本上来看早于调用构造器
的其它从构造器。这个规则的根本结果就是每一个 Scala 的构造器调用终将结束于对类的
主构造器的调用。因此主构造器是类的唯一入口点。”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册!

本版积分规则

快速回复 返回顶部 返回列表