Java中getter和setter方法
在Java中,无论是数据模型类(JavaBean),还是自己定义的某个对象中的属性,都需要自己手动定义getter和setter方法,下面以Bird对象为例,定义的getter和setter方法如下:
public class Bird{
private String color="Yellow";
private int age=0;
private String sex="female";
public String getColor(){
return this.color;
}
public void setColor(String color){
this.color=color;
}
public int getAge(){
return this.age;
}
public void setAge(int Age){
this.age=age;
}
public String getSex(){
return this.sex;
}
public void setSex(String sex){
this.sex=sex;
}
}
Kotlin中的getter和setter方法
在Kotlin中,定义对象属性中的getter和setter方法默认是隐藏的,此外,所谓的getter和setter方法是以get(){xxx}和set(value){xxx}方法存在于Kotlin中,与Java中的案例一样,表现与上面Java中相一致的逻辑代码如下:
class Bird(var color:String,var age:Int,var sex:String)
或者
class Bird{
var color:String=""
var age:Int=-1
var sex:String=""
}
在Kotlin中以最简洁的代码实现了与Java相同功能,在Kotlin是默认隐藏get(){xxx}和set(value){xxx}方法,这个两个默认方法表现形式如下:
class Bird {
var color: String = ""
get() {
return field
}
set(value) {
field = value
}
var age: Int = -1
get() {
return field
}
set(value) {
field = value
}
var sex: String = ""
get() {
return field
}
set(value) {
field = value
首先,get(){xxx}和set(value){xxx}必须写在对应的属性下方,这样field字段获取的值才能与属性值相对应,
Kotlin中的get()和set()高级用法
前面案例中,我们可以看到Bird对象在kotlin中可以以一句代码就解决了需要在Java代码中要用很多代码解决的getter和setter的问题,下面我们可以扩展下针对Kotlin中的get()和set()高级用法,针对上面的Bird对象我们可以稍微改下:
class Bird {
var color: String = ""
var age: Int=-1
get() {
return if (field > 0) field else 0
}
var sex: String = ""
get() {
return if (color == "Yellow") "male" else "female"
}
}
fun main() {
val bird = Bird()
bird.color = "Yellow"
bird.age = -4
println("这只鸟的颜色是->${bird.color},年龄->${bird.age},性别->${bird.sex}")
//这只鸟的颜色是->Yellow,年龄->0,性别->male
}
网友评论