Pus*_*tal 1 java getter-setter
每个人都知道Java支持数据隐藏.
我去采访了.然后面试官问我,如果Java使用private作为数据类型支持数据隐藏.
他说,如果我们在该课程中使用setter和getter,那么通过使用这些setter和getter,我们可以轻松获得私有数据.
那么这是如何支持数据隐藏的呢?
他有可能试图让我抓住陷阱.但我无法回答这个问题.
我该怎么回复?
他认为如果"数据隐藏"是一个OOP原则,那么我们不是通过getter和setter暴露它来打破它.我想他希望你能说明直接访问数据成员与通过getter或setter进行数据成员之间的原则差异.在前一种情况下,类的客户端可能会错误处理数据,为其分配一个类设计器尚未设计要处理的类(例如,将学生的年龄设置为500).在后者(使用setter)中,类设计者对可以分配给数据的值施加了某些限制.在年龄示例中,setter可能类似于:
void setAge(int age) {
if(age<3 || age>100)
return;
this.age=age;
}
Run Code Online (Sandbox Code Playgroud)
假设不允许年龄在3岁以下和100岁以上的学生.因此,您仍然隐藏数据,但允许以与模块逻辑一致的方式操作它.
| 归档时间: |
|
| 查看次数: |
1269 次 |
| 最近记录: |