大数据技术之Scala
======第一篇:Scala编程语言=====
Scala语言的面向对象(三)类的构造器
类的构造器分为:主构造器、辅助构造器
一、主构造器:和类的声明结合在一起,只能有一个主构造器
class Student4(val stuName:String,val stuAge:Int)
(1) 定义类的主构造器:两个参数
(2) 声明了两个属性:stuName和stuAge 和对应的get和set方法
二、辅助构造器:可以有多个辅助构造器,通过关键字this来实现
Scala代码整体实现
package mianxiangduixiang.lei
/**
* 类的构造器
* 主构造器、辅助构造器
*/
//主构造器
class GouZaoQiStudents3(var stuName:String, var stuAge:Int) {
//定义属性
private var gender:Int=80
/**
* 辅助构造器
* 可以有多个
* 辅助构造器就是一个函数,
* 只不过这个函数的名字叫 this
*/
//有参数的辅助构造器
def this(age:Int){
//this调用的是主构造器
this("Mike",age) //相当于new GouZaoQiStudent3("Mike",age)
println("-----这是有参数的辅助构造器:this(age:Int)------")
}
//没有参数的辅助构造器
def this(){
//这回this调用的是有参数的辅助构造器
this(22) //相当于new GouZaoQiStudent3("Mike",22)
println("-----这是无参数的辅助构造器:this()------")
}
}
object GouZaoQiStudents3{
def main(args: Array[String]): Unit = {
println("---使用主构造器---")
//使用主构造器创建学生对象
var s1 = new GouZaoQiStudents3("Tom", 23)
println(s1.stuName + "\t" + s1.stuAge)
println("---使用辅助构造器---")
//使用辅助构造器创建学生对象
//只传一个参数即可,因为有参数的辅助构造器只有age一个参数
var s2=new GouZaoQiStudents3(20)
s2.gender=90
// s2.stuName="Lily"
println(s2.stuName+"\t"+s2.stuAge+"\t"+s2.gender)
}
}
如果stuName、stuAge、gender在object类里没有被赋予新值,就采用原来默认的。