scala 中的修饰符
发布时间:2020-12-16 09:02:59 所属栏目:安全 来源:网络整理
导读:1 package cn.scala_base.oop.scalaclass 2 import scala.beans.BeanProperty; 3 /** 4 * scala中的field,类中定义的是方法,函数不依赖于类存在 5 * 6 */ 7 class Student { 8 // 没有修饰符的var变量,在编译时会被声明为private类型,但提供公共的get和set方
1 package cn.scala_base.oop.scalaclass 2 import scala.beans.BeanProperty; 3 /**
4 * scala中的field,类中定义的是方法,函数不依赖于类存在 5 * 6 */
7 class Student { 8 //没有修饰符的var变量,在编译时会被声明为private类型,但提供公共的get和set方法,即name,name_=,但调用赋值时采用 s.name=xxx的形式
9 var name = "tele"; 10
11 //error method name_= is defined twice
12 /*def name_=(name:String) { 13 this.name=name; 14 }*/
15
16 } 17
18 class Student2 { 19 //没有修饰符的val变量,但只提供公共的get方法
20 val name = "tele"; 21
22 } 23
24 class Student3 { 25 //使用private修饰的var变量.只有私有的get与set,如需访问,需要自定义get与set
26 private var name = "tele"; 27
28 def getName = name; 29
30 def setName(name: String) { 31 this.name = name; 32 } 33
34 } 35
36 class Student4 { 37 //使用private[this]修饰的var变量,为对象所私有,同一个类的不同对象不能相互访问该属性,也就是对象隔离级别
38 private[this] var name = "tele"; 39
40 //error,虽然s也是Student4类型,但是无法在Student4类中获取s的name,当然,如果提供了自定义的get方法则可以访问到
41 /*def getOtherName(s:Student4) { 42 println(s.name); 43 }*/
44
45 } 46
47 //生成java风格的get与set -> getName() setName(),当然还有name,name_=
48 class Student5 { 49 //使用占位符时必须声明参数类型
50 @BeanProperty var name: String = _; 51 } 52
53 //同上,参数在主构造器中
54 class Student6(@BeanProperty var age: Int) 55
56 object Student { 57
58 def main(args: Array[String]): Unit = { 59
60 // Student
61 val s1 = new Student(); 62 println(s1.name); 63 //只能赋值为String类型,因为在Student中name别声明为String
64 s1.name = "yeye"; 65 println(s1.name); 66
67 //Student2
68 /* val s2 = new Student2(); 69 println(s2.name); 70 //error 71 // s2.name="yeey";*/
72
73 //Student3
74 /* val s3 = new Student3(); 75 println(s3.getName); 76
77 s3.setName("yeye"); 78 println(s3.getName);*/
79
80 //Student5
81 /*val s5 = new Student5(); 82 s5.setName("yyyy"); 83 println(s5.getName); */
84
85 //Student6
86 val s6 = new Student6(15); 87 println(s6.getAge()); 88
89 } 90 }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容