Scala--面向对象(get和set方法)

定义不带private的var变量,此时scala生成面向jvm的类,会定义为private的name,并提供public的get和set方法
如果使用private修饰变量,则生成的get和set方法也是private
如果定义val 变量,则只会生成get方法
如果不希望生成get和set方法,可以声明为 private [this],需要自己定义get和set方法
    class Student {
        private var myName = "candle"
        //getter
        def name = {
            println("this is getter")
            myName
        }
        //setter
        def name_=(newName:String)  {
            println("this is setter")
            myName = newName
        }
        def info() {println(myName)}
}
注意:
	a.scala使用这种getter和setter方法,getter方法名和setter是要一致,只是setter方法名加上_
	b.setter方法 def name_=(newName:String)   而不是def name_(newName:String) =,这种写法是声明了一个 name_函数
    c.scala 默认对于成员,系统会自动添加一个同名的setter和getter方法。

实例01,scala风格
class Student {
   private var myName = "candle"
        //getter
        /*def name = {
            println("this is getter")
            myName
        }*/
        def name=myName//简写
        //setter
       /* def name_=(newName:String)  {
            println("this is setter")
            myName = newName
        }*/
        def name_=(newName:String)=myName = newName//简写
        def info() {println(myName)}
}
object Student{
 def main(args: Array[String]): Unit = {
   var s=new Student()
   s.name="asdf"
   s.info()
 }
}

实例02:注解形式
    import scala.reflect.BeanProperty
    class Student {
       @BeanProperty  
        var name = "aaa"
    }

系统会为对象自动添加 getName 和setName这两个函数,和java风格类似

实例03:java风格
    class HelloWord {
        private var name = "candle"
        def  getName = name
        def  setName(newName:String) = {name=newName}
        def hello() {println("hello" +name)}	
    }

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值