Java的属性为什么要设置成为私有的?和公有的有什么不同?

体现了封装性啊之类的教科书上的话就不要说了我想知道,似有的属性有get、set方法可以对属性操作,那么为什么还要设置私有?私有的属性和公有的属性又有什么不同?安全性?还是... 体现了封装性啊之类的教科书上的话就不要说了

我想知道,似有的属性有get、set方法可以对属性操作,那么为什么还要设置私有?私有的属性和公有的属性又有什么不同?
安全性?还是其他的什么?求指点
展开
 我来答
yin281108721
2013-06-22 · TA获得超过139个赞
知道答主
回答量:56
采纳率:0%
帮助的人:25.6万
展开全部
其实所有的属性都可以写get()set() 方法 你首要要明白get()set()的作用
get是取值用的set则是赋值用的 明白了这点再说私有和公有
其实对于修饰符 是有四种的 public(公有的) protected(子类使用的) 默认的(就是不写修饰符 也叫友好的) private(私有)
我们先把前三个说成是公有的吧 公有的就是说在符合条件的情况下 就可以直接调用 该类的属性 好比说 现在有个 《人 》的类 人是有年龄的吧 如果你可以任意调用它的年龄属性的话 那么你就可以任意给他赋值了 年龄可以为负数也可以写一千一万 那就没有安全性和约束性了
但是如果你把属性定义为私有的 但给他提供公有的getset方法 那么你在调用的时候就不能调用它的属性 只能调用它的getset方法 这时候你就可以在set方法中添加赋值的约束了 这样就可以保证安全性和约束性了
说了这么多不知道你理解吗 不理解Q我 281108721 我也是新手 说的 不好
小傻

2015-11-05 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31133
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部
Java的属性要设置成为私有的的原因如下:为了实现良好的封装性,如果外面的程序可以随意修改一个类的成员变量,会造成不可预料的程序错误。如果是public类型的话,就可以在其它的类中这样student.age = -100;
要是通过setter方法再进行赋值的话,就可以对传入的数据进行筛选
public void setAge(int age) {
if(0<age<150){
this.age = age;//加入逻辑,使得数据符合我们的要求
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
playboy5210
2015-09-28 · TA获得超过618个赞
知道小有建树答主
回答量:265
采纳率:100%
帮助的人:153万
展开全部
通常说java的属性是依赖于一个对象(Object)的.在java中绝大部分情况下,所有的类都是对象.
那么问题来了,只要是对象,可能就会存在属性.而这个属性,可能每个对象实例都是不一样的.
我们来举个实际例子来说明.
定一个一个类,代表人.
对于不同的人,我们肯定要有名字(不考虑真的没有名字的情况).其他属性我们先忽略.

名字就是一个对象的属性.如果设置成了公有,或者叫公开的.那就代表所有人都可以更改(可能公安机关是不允许的).那么我们怎么才能更加合理合法呢.

对,那就是把属性私有,设置方法(get和set)公开.这样.我们就能在我们的设置(set)方法中,做一些处理,比如通知公安机关(实际中可能是保存数据,当然,这里不考虑设计模式是否合理)说,我已经改名字了.这样的话理论上就更加简洁和通用了,对于属性的更改,外界直接调用更改方法.而一些必须的事情则放在方法中去处理.

尽最大努力回答,文笔很一般,不知道能不能明白.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shenweiweiabc
2013-06-21
知道答主
回答量:16
采纳率:0%
帮助的人:14.9万
展开全部

属性设置为private主要有两个方面的考虑:

  1. 统一入口和出口,这样我只需要规定哪些属性你可以操作(get或者set,而且是可选的,有些属性只能set,有些只能get),有些属性不开放,set和get都不给你用,也就是属性不对外开放

  2. 外部类对该类的属性调用有比较好的适应性,保证代码有比较好的完整性。举个简单的例子,我定义了一个类,这个类中有个time属性,原来单位是分,现在我想改成秒,只需要更改get中的方法就可以,外部调用这个类的其他类就不需要更改了,如果你直接采用对象.属性类获取的话,在外部只要有调用这个属性的地方都要改,这样对原代码破坏就比较大。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大愚来逛逛
2013-06-21
知道答主
回答量:9
采纳率:0%
帮助的人:3.6万
展开全部
将属性设为私有的,为 类内部可见,即该类的方法才可直接调用,如果不开放get,set方法,则即使实例化了该类的对象,也是不可调用到这个属性的,而将属性设为公有的,只要实例化了该类的对象,既可通过该对象调用此属性。一般只在类中使用的变量或者不想被外部调用的变量设为私有。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式