Scala之类(getter与setter属性,主构造器和辅助构造器)

scala中的类的特点
1.类中字段自动实现getter和setter方法
2.可以实现自定义getter和setter方法
3.使用@BeanProperty注解生成getXXX和setXXX方法
4.每个类有一个主构造器,随类定义一起声明,参数可以直接成为类字段,主构造器执行类体中的所有语句。
5.可以拥有任意多的辅助构造器,叫做this。

1.简单类与无参方法

class Person {
     //Person类
  private var age = 0 //定义私有属性
  def increment(){
   age += 1}  //定义increment方法,方法默认是公有的
  def current = age //定义current方法
  def act(person:Person): Unit ={
     //定义act方法
  
}

scala中,类不声明为public,源文件可以包含多个类,所有这些类都具有公有可见性
使用类只需构造对象然后调用方法即可

  val person = new Person() //创建Person实例
    person.increment()  //调用person对象的increment方法
    person.increment
    println(person.current)

调用无参方法比如increment时,可以加(),也可以不加。
何时应该使用哪种方法?对于改值器方法(即改变对象状态的方法)使用(),而对于取值器方法(不会改变对象状态的方法)可以丢掉()

  person.increment()  //对改值器使用()
  println(person.increment)  //对取值器不使用()

可以通过以不带()方式声明increment方法来强制这种风格。如上面的

class Person{
   
...
def current = age //定义中就不带()
}

这样一来类的使用者就必须使用person.current而不带()

2.自动带有getter和setter属性
在java中,我们喜欢:

public class Person {
   
	private int age;
    public int getAge() {
   return age;}
    public void setAge(int age) {
   this.age = age;}
}

像这样一对getter/setter通常被称为属性property,我们说Person类有一个age属性。但这样好在哪里呢,与被声明为公有字段,现在任何人都可以调用set或者get方法对其进行改变,但之所以说使用getter和setter方法,是因为它们让你可以从简单的get、set机制出发,在需要的时候进行改进。
而scala对每个字段都提供了getter和setter方法,现在如有:

class Person {
   
	var age  = 0
}

scala生成面向JVM的类,其中有一个私有的age字段以及相应getter和setter方法,这两个方法是公有的,因为我们没有将age声明为private(对于私有字段而言,getter和setter方法也是私有的)
在scala中&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值