<人力资源/>
getter和setter
简单类和无参方法
需要说明的是,官方给出的参考资料对于这方面讲解得十分详细,目前入门来说,不需要达到这样的理解,只需要可以进行开发即可,这一部分我给出的是官方的一些文档说明,但是后面的定制和注解,就直接简单说明能用就好了。
引用><代码>类PersonOps { 私人var=0岁//你必须初始化一个字段 def increment(){年龄+=1}//方法默认是公有的 def currentAge()=年龄 }代码>1)在Scala中,类并不声明为public.Scala源文件可以包含多个类,所有这些类都具有公有可见性。
2)如何进行调用?
<代码>对象MainOps { def主要(args:数组(String)) { 新personOps val personOps=personOps.increment () println (“currentAge=比;“+ personOps.currentAge ()) } }代码>3)不能用类直接调用年龄,因为年龄是私有字段,只能在PersonOps中访问到。
4)无参方法
<代码> println (“currentAge=祝辞;”+ personOps.currentAge ()) println (“currentAge=祝辞;”代码+ personOps.currentAge) >建议:对设置值的时候,即改变对象状态值或者状态时使用(),而对于取值来说(不会改变对象的状态和值)去掉()是个不错的风格,这也是我们事例中的方法。
引用><代码> personOps.increment () println (“currentAge=比;代码”+ personOps.currentAge) >5)你可以通过以不带()的方式声明currentAge来强制这种风格:
<代码>类PersonOps { 私人var=0岁//你必须初始化一个字段 def increment(){年龄+=1}//方法默认是公有的 def currentAge=年龄 }代码>结果:这样一来在调用时,必须要用不带()的进行方法调用
<代码> println (“currentAge=祝辞;”代码+ personOps.currentAge) >6)带getter和setter的属性
Java中属性定义
<代码类="语言Java ">公共类人士{//这是Java 私人int年龄; 公共int getAge(){返回年龄;} 公共空间setAge (int年龄){this.age=年龄;} } 代码>getter和setter方式比共有字段(公共)好在什么地方呢?
之所以说getter和setter方法比公有字段更好,是因为它们让你可以从简单的获?设置机制出发,并在需要的时候做改进。
scala中5)的getter和setter方法
<代码>类角色{ var=0岁 }代码>a.Scala生成面向JVM的类,其中有一个私有年龄的字段以及相应的getter方法和setter方法。这两个方法是公有的,因为我们没有将年龄声明为私有的。而对私有字段而言,getter和setter方法也是私有的。
。在Scala中,getter和setter分别叫做年龄和age_=例如:
<代码> val角色=新形象 println (“startAge=比;“+ personA.age) 的角色。年龄=21 println (“endAge=比;代码”+ personA.age) >执行下面的命令:
<代码类=" language-shell ">那个PersonOps.scala 主要\ src \ \ scala \ tw \ tw> javap - p PersonA.class 代码编译从“PersonOps.scala”>然后会生成下面的内容:
<代码类="语言java ">公共类太瓦。角色{ 私人int年龄; 公共int年龄(); 公共空间age_ $ eq (int); 公共tw.PersonA (); }代码>正如你看到的那样,编译器创建了年龄<代码> 代码>和<代码> age_ $ eq> 代码,是因为JVM不允许在方法名中出现=
说明:在Scala中,getter和setter方法并非被命名为getXxx和setXxx,不过它们的用意是相同的。后面会介绍如何生成Java风格的getXxx和setXxx方法,以使得你的Scala类可以与Java工具实现互操作
引用>定制的getter/setter方法
这部分先不用搞太复杂,直接使用Java版本的getter/setter方法即可,如下面一个类:
<代码>类学生{ 私人var年龄:Int=0 def setAge(年龄:Int):单位={ 这一点。年龄=年龄 } def getAge()=年龄 }代码>测试如下:
<代码> scala>val s=新学生() 学生:学生=Student@1608bb5d scala>年代=Student@1608bb5d res200:学生 scala>s.getAge () res201: Int=0 scala>s.getAge res202: Int=0 scala>s.setAge (18) scala>s.getAge res204: Int=18Scala笔记整理(三):Scala面向对象——类详解1