学习到了封装, 也希望这篇文章能个给后面学习 java 的人一点帮助.
首先我们用实际问题先感受一下封装的概念.
用人来举例, 人的年龄是有限的, 0-120 左右
我们在社交网站填写个人信息的时候, 也会有年龄这一项, 那么这个年龄允许填写负数或者很大的数吗?
实际上是不允许的.
这个时候实际上是对年龄这一项做出了某些条件的限制
再比如, 中国人的名字.
登记户口的时候, 名字和领导人的名字同名是否可行?
还是不行, 因为国家不予许这样做
这个时候国家对名字这一项也做出了条件限制
回到我们程序
- public static void main(String[] args) {
- // 符合语言规则, 不符实际生活的案例, 不推荐这样做
- Person p = new Person();
- p.age = -18;// 这样做在语言层面是合法的, 但是并不符合实际生活中的情况
- p.name = "习主席";
- }
- class Person{
- int age;// 类比人的年龄
- String name;// 类比中国人的名字
- }
但是这样做会有很多不符生活的名字, 年龄.
所以 Java 的前辈们想出了一种方法, 封装, 用封装来给成员变量一定的限制.
1. 对成员变量或者方法添加 private_____使其不允许被对象的引用 (p.age 会报错) 直接访问; 被 private 修饰之后无法直接访问那我们如何访问呢?
例如 age, 可以这样去得到 age p.getAge();
- public int getAge() {
- return age;
- }
设置年龄
- p.setAge();
- public void setAge(int age) {
- // 这样我们对年龄做出了限制, 更加符合我们的需求
- if(age>120 && age<0){
- age==0;
- return;
- }
- this.age = age;
- }
2. 使用 public 成员方法操作被 private 修饰的成员
- class Person{
- private int age;// 使用 private 修饰 age, 不让这个属性被对象的引用直接访问,(p.age 会报错)
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
来源: http://www.bubuko.com/infodetail-2839947.html