《scala函数式编程》之面向对象1

package lyzx.com.basic.day02

class User {
  /**
    * var 变量会生成getter和setter方法
    * val 变量会生成getter方法
    *
    * private 修饰的变量生成的getter/setter都是private的
    * private[this]修饰的变量不会生成getter/setter方法
    */
  var age = 18;
  val contury = "China";
  private var sex = "1"
  private[this] var ablity = ""

  /**
    * 通过使用private修饰var + 重写getter、setter的方式值对外暴露
    * var变量的getter方法
    */
  private var school = "北京大学"
  def getSchool(): String ={
    return school
  }

  def setSchool(newName:String): Unit ={
    if("清华大学".equals(newName))
       school = newName
  }
}

User类代码如上

package lyzx.com.basic.day02

/**
  * Scala中,可以给类定义多个辅助constructor,类似于java中的构造函数重载
  * 辅助constructor之间可以互相调用,而且必须第一行调用主constructor
  *
  * Scala中,主constructor是与类名放在一起的,与java不同
  * 而且类中,没有定义在任何方法或者是代码块之中的代码,就是主constructor的代码
  */
class Student{
  private var name="";
  private var age=0;
  private var score="";

  def this(name1:String,age1:Int){
    this()
    this.name = name1
    this.age = age1
  }

  def this(name:String,age:Int,score:String){
    this(name,age)
    this.score = score
  }

  override def toString = s"Student($name, $age, $score)"
}

Strudent类如上所示

package lyzx.com.basic.day02

class T3 {
  def f1(): Unit ={
    val u = new User
    println(u.age)
    println(u.contury)
    u.age = 199
    println(u.age)

    //编译不通过
//      u.contury = "";
    println(u.getSchool())

    u.setSchool("清华大学")
    u.setSchool("清华大学2")
    println(u.getSchool())
  }

  def f2(): Unit ={
    val t = new Student("lyh",22,"清华大学")
    println(t.toString)
  }
}

object T3{

  def main(args: Array[String]): Unit = {
      val t = new T3
    t.f2()
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值