scala学习笔记06--主从构造器

来源:互联网 发布:p2psearcher这样的软件 编辑:程序博客网 时间:2024/05/06 16:25

在Scala中,有两种构造器,主构造器(primary constructor)和从构造器(auxiliary constructor)。

主要点都夹杂在代码注释中,留存。

  1. /*  
  2. 构造器  
  3. */  
  4. object constractTest {  
  5.     def main(args: Array[String]): Unit = {  
  6.         var p = new Person(20)  
  7.         println(p.name)  
  8.         println(p.age)  
  9.         println(p.message)  
  10.     }  
  11.   
  12.     //定义类的时候,就定义了构造器。即:是()内的内容。  
  13.     //主构造器会将类定义{}里的所有语句执行一次。  
  14.     //如果主构造器参数不带val或var,那么会根据是否被方法使用来决定。  
  15.     //如果不带val或var的参数被方法使用了,它会变为对象私有字段;  
  16.     //如果没有被方法使用,则被当成一个普通的参数,不升级成字段。  
  17.     //这里的主构造器是(pname: String, page: Int).  
  18.     class Person(val pname: String, page: Int) {  
  19.   
  20.         println("start...")  
  21.   
  22.         var name = pname  
  23.         var age = page  
  24.         var message = ""  
  25.   
  26.         //从构造器,调用主构造器。  
  27.         //规则:每一个从构造器的第一个动作都是调用同一个类里面其他的构造器!!!!因此主构造器是类的唯一入口点。   
  28.         //这里的从构造器,调用了主构造器。  
  29.         def this(pname: String) = this(pname, 20)  
  30.   
  31.         //同时加入其他逻辑  
  32.         def this(page: Int) {  
  33.             this("mike", page)  
  34.             message = "hello"  
  35.         }  
  36.   
  37.         println("end...")  
  38.     }  
  39. }  

-------------------------------------------------------------------------

执行结果:

start...
end...
mike
20
hello

-------------------------------------------------------------------------

tips参考于http://www.douban.com/note/297823346/

0 0
原创粉丝点击