Scala基础:类和构造器

Scala基础:类和构造器

package com.zy.scala.cls

/**
  * 在 Scala 中,类并不用声明为 public 类型的。
  * Scala 源文件中可以包含多个类,所有这些类都具有共有可见性。
  */
class Person {
  //用 val 修饰的变量是可读属性,有 getter 但没有 setter(相当与 Java 中用 final 修饰的变量)
  val id = "9527"
  //用 var 修饰的变量都既有 getter,又有 setter
  var age: Int = 18
  //类私有字段,只能在类的内部使用或者伴生对象中访问
  private var name: String = "唐伯虎"
  //类私有字段,访问权限更加严格的,该字段在当前类中被访问
  //在伴生对象里面也不可以访问
  private[this] var pet = "小强"
}

//伴生对象(这个名字和类名相同,叫伴生对象)
object Person {
  def main(args: Array[String]): Unit = {
    val p = new Person
    //如果是下面的修改,发现下面有红线,说明 val 类型的不支持重新赋值,但是可以获取到值
    //p.id = "123"
    println(p.id)
    //打印 age
    println(p.age)
    //打印 name,伴生对象中可以在访问 private 变量
    println(p.name)
    //由于 pet 字段用 private[this]修饰,伴生对象中访问不到 pet 变量
    //p.pet(访问不到)
  }
}

 

构造器

package com.zy.scala.cls

/**
  * 每个类都有主构造器,主构造器的参数直接放置类名后面,与类交织在一起
  */
class Student(val name: String, var age: Int) {
  //主构造器会执行类定义的所有语句
  println("执行主构造器")
  private var gender = "male"

  def this(name: String, age: Int, gender: String) {
    //每个辅助构造器执行必须以主构造器或者其他辅助构造器的调用开始
    this(name, age)
    println("执行辅助构造器")
    this.gender = gender
  }
}

object Student {
  def main(args: Array[String]): Unit = {
    val s1 = new Student("zhangsan", 20)
    val s2 = new Student("zhangsan", 20, "female")
  }
}

 

posted @ 2018-10-15 10:37 青衫仗剑 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值