Scala--类
scala类
,是比较精简。主构造器和类交织在一起,而且,scala类上面声明的全局变量,自带了get/set方法,还可以转化为java的bean。总体来说比较简单,精简,易懂。
一个简单的类
1 | /** |
- 运行结果
1 | 1 |
scala文件可以包含多个类,类中的成员变量必须初始化。
调用scala类中需要new 类[()]
,“()”可以省略。
调用该方法是如果是一个简单的取值方法可以省略“()”,否则建议添加“()”。注:只是建议的一种风格而已。
get/set
1 | import scala.beans.BeanProperty |
- 执行结果
1 | xiaoxiaomo |
对于get/set
的用法很简单,只需要记住几点就行了:
成员变量需要需要初始化
默认共有的字段外部可以访问和修改
(val类型的不可以修改
)私有的成员变量外部不可以访问
,在类的作用范围内可使用
访问当权对象的字段可以使用this
变量声明前加@BeanProperty
生成JavaBeans规范get/set
,即getXXX,setXXX。
构造器
主构造器
在scala中,每一个类都用主构造器,并和类的定义交织在一起。
1 | /** |
- 运行结果
1 | 这是一个主构造器! name:xiaoxiaomo |
记住重要的一点,就是:默认的构造器(主构造器)和类交织在一起
。
主构造器的
参数直接跟在类名后面
;
主构造器如果没有参数,就是一个无参的主构造器
,仅仅是简单的执行以下类里面的语句;
参数可以添加默认值,修饰符,如果没有默认值时在构造这个函数时必须传值初始化
;
构造一个构造器时,会默认执行类中语句
(我们可以去加载一些配置文件等)。
辅助构造器
scala类中,除了主构造器之外还有很多辅助构造器,赋值构造器使用this
命名1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31/**
* 辅助构造器
* Created by xiaoxiaomo on 2016/3/28.
*/
class AssistClazz( val name:String , private var age :Int = 0) {
private var sex = 0
private var height = 175.0
//第一个辅助构造器
def this(sex:Int){
this("xiaoxiaomo")//调用的主构造器
this.sex = sex
}
//第二个辅助构造器
def this(sex:Int,height:Double){
this(sex)//调用的上面一个辅助构造器
this.height = height
}
}
//测试一下
object TestAssistClazz{
def main(args: Array[String]) {
new AssistClazz("twosnail")//调用的主构造器
new AssistClazz("twosnail",23)//调用主构造器
new AssistClazz(1)//调用第一个辅助构造器
new AssistClazz(1,178.0)//调用第二个辅助构造器
}
}
辅助构造器的名称为this;
每一个辅助构造器都必须以一个对先前已定义的其他辅助构造器或主构造器的调用开始(必须在第一行);
通常我们可以在主构造器中使用默认参数来避免过多的使用辅助构造器;