scala 编程(其六)类属性与构造器

scala 类说明:
1,声明类: 默认是public关键字
2,一个类文件可以声明多个类,也可以类名称不和文件名称相同!
3,private var 与 private[this] val 表示私有属性,后置伴生对象度偶不能访问!
4,如果有多个main方法,那么就会调用最后一个 main
5,object 类是静态类,无需new类的实例,所以object中的方法都是静态方法,不需要实例化,有点像函数编程
package day01
class Test10 {
    // val修饰的变量只是只读的 ,可以不指定类型
    val id = 1
  // name 有可能变化, var 修饰相当于同时有 get和set 方法
  // _ 相当于初始值 默认是 None
    var name:String = _
    private var age:Int = _ //只能是本类,伴生对象访问
    private[this] val gender = "男"//对象私有变量,只能本类访问,伴生对象访问不了
}
// Test10 的伴生对象 ,类名相同!
object Test10{
  def main(args: Array[String]): Unit = {
      val p =new Test10
      println(p.id)
      p.name = "小明"
//      println(p.gender)  //it is error
  }
}
//object中定义的方法自动都是static的
//无需new类的实例,所以object中的方法都是静态方法,可以直接被调用,有点像函数调用
object test{
  def main(args: Array[String]): Unit = {
    val  p = new Test10
    println(p.name)
  }
}
scala 构造器
1,主构造器的参数列表要放在类名的后面,和类名放在一起,主构造器执行类定义中的所有语句
3,辅助构造器的名称为this 每一个辅助构造器必须先调用主构造器或其他已经定义好的辅助构造器
2,val 修饰的构造参数具有不可变性,var 修饰的具有可变性,两者都没修饰只能在本地调用!
package day01
// 类有参数 就叫做构造器,参数不用 val或者 var 后面是访问不到的
// gen 如果不指定 val 或者 var 默认是 val声明的!
class Test11(val name:String,var age:Int,gen:String) {
  var gender:String = _

  def get_gen():String ={
        gen  // 可以不写 return 最后一句代码的值作为返回
    }
  //辅助构造器
    def this(name:String,age:Int,gen:String,face:Int){
        this(name,age,gen) //辅助构造器,首先要调用主构造器
        this.gender = gen
    }
}
object Test11{
  def main(args: Array[String]): Unit = {
    val p = new Test11("小明",12,"女")
//    p.name ="aa" 不能赋值,val 修饰  实际上 在 java 之中 访问的是 public name()
      p.age=23
      println(p.name)
      println(p.age)
//    println(s.gen) //it is error
    println(p.get_gen())

    val s = new Test11("小明",12,"女")
    println(s.gender)
    println(s.age)
  }
}

 

posted @ 2019-03-09 12:39  十七楼的羊  阅读(253)  评论(0编辑  收藏  举报