我们先写一个Java中的一个简单的JavaBean类Student,只包含一个属性,name。
public class Student {
private final String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
而Kotlin中同样的类是这样的:
class Student(val name: String)
在Kotlin中public是默认的可见性,所以可以省略。这种只有数据没有其它代码的类,通常被叫做值对象,Kotlin提供了简明的
语法来声明它们。
在Java中,数据存储在字段中,通常是私有的,提供访问器方法:一个getter,可能还有一个setter,这种字段和其访问器的组合常常被叫作属性。
在Kotlin中,属性是头等的语言特性,完全代替了字段和访问器方法。在类中声明一个属性和声明一个变量一样:使用val和var关键字。声明成val的属性是只读的,而var属性是可变的。
class Student(val name: String, var age: String)
上面的类中声明了一个只读属性name,可写属性age。使用Student类:
val student = Stedent("Li", 16)
println(student.name)
println(studengt.age)
>>>Li
>>>16
Kotlin找中可以直接使用属性,不在需要调用getter。
当然Kotlin通用支持使用getter,这个时候需要自定义getter来计算出属性的值。
class Rectangle(val height: Int, val width: Int) {
val isSquare: Boolean
get() {
return height == width
}
}
val re = Rectangle(22, 23)
println(re.isSquare)
>>>false
属性isSquare有一个自定义实现的getter,它的值是每次访问属性的时候计算出来的。