栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么Java中的实例变量总是私有的?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么Java中的实例变量总是私有的?

实例变量被设为私有,以强制这些类的用户使用方法来访问它们。在大多数情况下,有简单的getter和setter方法,但也可以使用其他方法。

例如,使用方法将允许您将访问限制为只读,即,如果没有设置器,则字段可以读取但不能写入。如果该领域是公开的,那将是不可能的。

此外,您可能会为字段访问添加一些检查或转换,而对普通字段的普通访问则无法实现。如果某个字段是公共的,并且您以后想通过某种执行其他检查的方法来强制所有访问,则您必须更改该字段的所有用法。如果将其设为私有,则以后只需更改访问方法即可。

如果

phone
是私人的:

考虑这种情况:

class Address {  private String phone;  public void setPhone(String phone) {    this.phone = phone;  }}//access:Address a = new Address();a.setPhone("001-555-12345");

如果我们从这样的类开始,然后以后需要对phoneNumber进行检查(例如,一些最小长度,仅数字等),则只需更改设置器即可:

class Address {  private String phone;  public void setPhone(String phone) {    if( !isValid( phone) ) { //the checks are performed in the isValid(...) method     throw new IllegalArgumentException("please set a valid phone number");    }    this.phone = phone;  }}//access:Address a = new Address();a.setPhone("001-555-12345"); //access is the same

如果

phone
是公开的:

有人可以这样设置,

phone
而您对此无能为力:

Address a = new Address();a.phone="001-555-12345";

如果现在要强制执行验证检查,则必须将其设置为私有,写上述行的人必须将第二行更改为:

a.setPhone("001-555-12345");

因此,您不能只添加检查而不会破坏其他代码(它将不再编译)。

此外,如果您通过方法访问类的所有字段/属性,则可以使访问保持一致,并且用户不必担心该属性是存储的(即是一个实例字段)还是经过计算的(仅存在方法而没有实例字段)
)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437631.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号