加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读