java中
例如:一个学生类Student,
有属性:学号no,名字:name,将其定义为私有。
- 符合私有非公开的逻辑意义,封装性。
- 其二是通过get和set方法通过setter方法再进行赋值的话,就可以对传入的数据进行筛选,功能性。
public void setAge(int age) {
if(0<age<150){
this.age = age;//加入逻辑,使得数据符合我们的要求
}
}
- 多线程时,不能用synchronized去修饰一个变量,这样就不能保证的安全性。
扉
但实际上公有/私有也是通过对象调用的,最简单的对象完全可以不用get/set方法,就好像我想知道自己的名字,还要通过get名字来实现。静态方法或者一公(提供外部访问)一私(真实数据)private的功能性更明确一些。这么写为了以后功能方便拓展->所以kotlin出现默认的get/set,默认可以不声明私有,如果想有功能性也可以再写出来拓展
Kotlin
- 初始
class Test {
var str: String? = null
var count: Int = 0
}
- 加入赋值的条件需求后
class Test {
var str: String? = null
get() {
return field//这里的field指的是str
}
set(value) {
//传入的值value
if(value>1000)
field = value
else
field=-1
}
}
精简Room实体
- 假设自己写了get/set方法,调用也只需要直接访问即可