实例: 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语句不能添加这样的功能,区别就在这。
|