黑马程序员技术交流社区
标题: java的封装原因和好处 [打印本页]
作者: DDV 时间: 2016-7-11 22:14
标题: java的封装原因和好处
实例:
class Person
{
private int age;
public void setAge(int a)
{
if(a>0 && a<130)
{
age = a;
speak();
}
else
System.out.println("feifa age");
}
public int getAge()
{
return age;
}
private void speak()
{
System.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person();
//p.age = -20;
p.setAge(-40);
//p.speak();
}
}
在PersonDemo类当中,直接操作new了一个Person,那么可以直接通过对象名.属性去给这个对象赋值,但是为什么这样不好,需要把类内部的属性封装起来,不然外部直接操作呢。这点一直不太理解,总有多此一举的感觉。因为封装了,通过set或get也一样外部能够操作和更改值,而且这样还比较麻烦。之前看视频的时候,说原因是可以添加检查,排除一些非法的输入,不怎么理解,现在理解了,如果设置一个set方法的话,那么方法体里面可以增加一些if语句去检查输入是否合乎常理,避免出现非法数据,这样程序就具有意义,而暴露在外部的话,if语句不能添加这样的功能,区别就在这。
作者: heimaojyj 时间: 2016-7-25 12:30
对,其实set除去赋值这个功能
最关键的是,可以做各种判断操作,实现各种细节
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |