问一个有关面向对象封装的问题 小弟我有个问题就是类中set、get方法是不是破坏了类的封装呢,一个类中的私有成员能够随意的用set方法对其修改,是不是违反了类的封装性呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有。setter/getter你可以自己施加控制,再说你也不是什么field都要给各setter/getter的。 set/get器 就是用来“得到值”和“设置值”的而已。 除了不是每个属性都设get/set方法外,也可以改get/set方法加相应的修饰符来限制外部的其的访问 自身类中的private 属性 就是通过 自身类中的public set 和 get方法来进行数据的封装 其实就是javabean的属性的访问权限控制,楼主看看这方面的东西 封装的意义就是不能让人随便的去更改。可是我总觉得set 方法从某种意义上说破坏了其封装性 你可以看看这些属性是什么,都是private的属性就是说,除了他自己可以访问以外,别的类是访问不了的,所以get是由创建他这个类的实例来调用的 对呀,你能通过set添加bean吗?真是 public class Test { String s = "小强"; public static void main(String[] args) { System.out.println(new test2().s); }}class Test2 extends Test {}看了这个例子你就明白了如果属性不是private 是会被继承下来的而且set get可以控制访问形式 sorry 打太快 有个地方打错了main()方法里的test2的T应该是大写 封装是指类将自己的成员和方法组织到一起,以方便使用和维护,并不是指不让修改自己的属性值.set方法虽然能改变私有成员的值,但也是自己的实例才能调用,其他类的实例是无法调用的,因此谈不上破坏封装性. 封装是指类将自己的成员和方法组织到一起,以方便使用和维护,并不是指不让修改自己的属性值.set方法虽然能改变私有成员的值,但也是自己的实例才能调用,其他类的实例是无法调用的,因此谈不上破坏封装性. 如果想封装程度更高一些,可以把 set 方法设为 private, protected 或者是没有修饰。这样做的话,一般是针对一些只读属性。 这个不会破坏封装,其实 get set只是向外界提供了一个接口,外界要通过这个接口才能访问到这个属性。比如 类A的一个对象是a 那么加入age是他的一个属性 其为private那么a.age这样是非法的 因为age是private只能被类的其他对象访问 ,所以通过get set方法 才能通过这个对象访问到他的属性age 比如a.setage a.getage 所以 这样不会破坏对象的封装 set 方法确实可以修改类的属性不过你要知道如果不留一个公共接口给外界调用的话那这个类就没有意义了 Spring配置RequestMapping配置好控制器了,为何不能通过浏览器访问这个连接呢呢? 关于html隐藏域的用法 Extjs中如何在一行textfield后面加几个字 onclick能给调转路径参数赋值吗? 谁知道股票行情显示是什么插件做的? JavaScript中如何得到两个日期差的月份及天数?给分....急!!!! 关于request.getContextPath()的问题 紧急~~~!!连数据库出错拉~~怪事。。。在线等Help~~~ 关于图片路径的问题 关于数据库update问题 struts string转换为date Connection 循环保存大量数据问题
setter/getter你可以自己施加控制,再说你也不是什么field都要给各setter/getter的。
public class Test {
String s = "小强"; public static void main(String[] args) {
System.out.println(new test2().s);
}
}class Test2 extends Test {}
看了这个例子你就明白了
如果属性不是private 是会被继承下来的
而且set get可以控制访问形式
main()方法里的test2的T应该是大写
set方法虽然能改变私有成员的值,但也是自己的实例才能调用,其他类的实例是无法调用的,
因此谈不上破坏封装性.
set方法虽然能改变私有成员的值,但也是自己的实例才能调用,其他类的实例是无法调用的,
因此谈不上破坏封装性.
这样做的话,一般是针对一些只读属性。
不过你要知道如果不留一个公共接口给外界调用的话
那这个类就没有意义了