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