Scala中类private

来源:互联网 发布:破解版用友软件 编辑:程序博客网 时间:2024/05/16 12:43

类中属性没有修饰符,默认public

class  Counter{  var value=0  def increment(){value+=1;println("hello world")}  def isLess(other:Counter)=value<other.value  //def current=value}val n=new Counterval n1=new Countern1.increment()println(n1.value)println(n.isLess(n1))

如果是
private val value=0;
那么n1.value就会报错

Scala对每个字端都提供geter与setter方法。

class Person{      var age=0 }

这里写图片描述
编译器创建了age和age_eq(=eq,是因为JVM不允许方法名中出现=)
在Scala中,getter与setter方法并不是被命名为getXXX,和setXXX。

任何时候都可以自己重新定义getter和setter方法。

class Person{    private var privateAge=0    def age=privateAge  def age_=(newValue:Int): Unit ={    if(newValue>privateAge) privateAge=newValue  }}

scala为每个字段生成getter与setter方法。

  • 如果字段是私有的,那么setter与getter也是私有的
  • 如果字段是val,那么只有getter方法被生成
  • 如果不需要任何getter与setter,那么将字段声明为private

这里写图片描述

只带getter的属性

如果需要只读属性,那么声明为val,Scala生成一个私有的final字段和一个getter方法,但是没有setter。

原创粉丝点击