类的基本内容要点:
0、scala不允许重写(覆盖)getter,setter方法
1、scala在定义字段时使用var ,默认生成对应setter和getter方法
2、调用了scala的setter方法 对应的方法名称money_=(或即value_$eq)
3、调用了scala的gettter方法 对应的方法名称就为字段名称money
4、当使用val定义字段时,scala不在提供对应的setter方法
5、如果使用private修饰字段时 scala不在提供对应的对外的setter和getter方法,内部还是有的 即生成修饰符为private 的方法,所以覆盖不了getter,setter方法 6. 如果使用private[this]修饰字段时,就不生成setter和getter方法
7、@BeanProperty和private不能同时使用
在scala不在提供静态字段和静态方法的功能
用object去实现
当class的名称和对象的名称相同时,把该对象叫做同名类的伴生对象
Object是一种类型,与class非常相似。
Object可以提供java中的静态字段、静态方法的功能。
我们在用Java的时候经常把一些字段定义为private类型来完成封装,这样外界就无法访问。
如果外界访问或者修改该字段的时候,只能通过该字段提供的getter和setter方法来实现。
在Scala中是没有getter和setter一说的。
用了value 和 value_= (或value_$eq) value即需要定义变量名来分别代替了getter和setter。
下面我们看个例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
注意,这里的value不是唯一名字,可以用别的名字。
def age = privateAge; def age_= (newAge :Int){ age = newAge;}
myAge.age;//访问age myAge = 3;//设置age为3
其实Scala是对每个字段自动生成getter和setter方法的
■ 如果字段是私有的,则getter和setter方法也是私有的
就是说明,当我们定义一个字段为私有的时候,自动生成的getter和setter也不能被外界使用了。
就是我们不能在外界使用 点+字段 的方式来访问或者修改该字段了。
我们可以通过自己改写scala的getter和setter来完成对私有变量的访问和修改,如上述。
■ 如果字段是val,则只有getter方法被生成
当我们需要getter和setter的时候,可以定义变量为var
当我们只需要getter不需要setter的时候,我们可以定义变量为val
■ 如果你不需要任何getter或setter,可以将字段声明为private[this]
我们要么在对私有变量设置访问方法的时候
要么加上getter方法(对val字段而言)要么加上getter和setter方法(对var字段而言)
但在Scala中,你不能实现只写属性,即带有setter但不带getter的属性。