Scala学习第八天 Scala主构造器、私有构造器、构造器重载实战详解

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
DT大数据梦工厂群号:302306504王家林老师微信号:wangjialinandroid

内容:
1、Scala主构造器
2、构造器重载
3、私有构造器

一、Scala主构造器&构造器重载
(1)无参的主构造器
//定义Teacher类时,有个默认构造器Teacher(),是其主构造器,其他所有构造器都是他的重载构造器,任何一个重载构造器必须直接或间接调用主构造器

class Teacher {
  var name : Sting = _
  private var age 27
  private[this] val gender = "male"
  def this(name : String){
    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"
    p.sayHello
}

(2)有参的类构造器

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
  }
}
def main(args: Array[String]{
  Val p = new Teacher("Spark",5)//使用主构造器
  println(":"+p.age)
  val p=new Teacher("Spark",5,"mail") //使用重载构造器 
  println(":"+p.age)
}

二、私有构造器
//有时候,为了不想使用者使用默认构造器,我们可以将类的主构造器设为private

class Teacher private(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("Spark",5,"mail") //使用重载构造器 
  println(":"+p.age)
}

Scala 深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:

百度云盘:http://pan.baidu.com/s/1c0noOt6

腾讯微云:http://url.cn/TnGbdC

360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2
Scala视频及其更新和其他资料(Spark公开课、安卓基础、移动互联网)下载:
百度云盘:http://pan.baidu.com/share/home?uk=4013289088&view=share#category/type=0

你可能感兴趣的:(scala,私有构造器,主构造器,构造器重载)