主构造器与私有构造器
package kmust.hjr.learningScala08
/**
* Created by Administrator on 2015/7/14.
*/
class Teacher{
var name:String=_
private var age =25
private [this] val gender="male"
def this(name:String){
this
//this()
this.name=name
}
def sayHello()={
println(this.name+":"+this.age+":"+this.gender)
}
}
object OOPInScala {
def main(args:Array[String])={
val p=new Teacher
p.name="Spark"
println(p.name)
//println(p.gender)
p.sayHello()
}
}
私有构造器说明
Teacher类里面的:**private [this]** val gender="male"为私有属性,只能在对应的实例当中使用,比如:
def sayHello()={
println(this.name+":"+this.age+":"+this.gender)
}
而在实例外面就不能访问,如下:
构造器重载
class Teacher(val name:String,val age :Int){
println("This is the primary constructor !!!")
var gender:String=_
println(gender)
def this(name:String,age:Int,gender:String){
this(name,age)
this.gender=gender
}
}
object OOPInScala {
def main(args:Array[String])={
val p=new Teacher("Spark",5)
println(":"+p.age)
/*val p=new Teacher("Scala",25,"male")
println(":"+p.age)*/
}
}
object OOPInScala {
def main(args:Array[String])={
/* val p=new Teacher
p.name="Spark"
println(p.name)
//println(p.gender)
p.sayHello()*/
/*val p=new Teacher("Spark",5)
println(":"+p.age)*/
val p=new Teacher("Scala",25,"male")
println(":"+p.age)
}
}
附件:完整代码
package kmust.hjr.learningScala08
/**
* Created by Administrator on 2015/7/14.
*/
class Teacher{
var name:String=_
private var age =25
//val gender="male"
private [this] val gender="male"
def this(name:String){
this
//this()
this.name=name
}
def sayHello()={
println(this.name+":"+this.age+":"+this.gender)
}
}
class Teacher(val name:String,val age :Int){
println("This is the primary constructor !!!")
var gender:String=_
println(gender)
def this(name:String,age:Int,gender:String){
this(name,age)
this.gender=gender
}
}
object OOPInScala {
def main(args:Array[String])={
val p=new Teacher
p.name="Spark"
println(p.name)
//println(p.gender)
p.sayHello()
val p=new Teacher("Spark",5)
println(":"+p.age)
val p=new Teacher("Scala",25,"male")
println(":"+p.age)
}
}