Scala-Scala语言的面向对象(三)类的构造器

Posted on 2020-05-31 22:29  MissRong  阅读(271)  评论(0)    收藏  举报

大数据技术之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类里没有被赋予新值,就采用原来默认的。

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3