Java(12)封装和隐藏(面向对象特征一)

封装和隐藏(面向对象特征一)

利用gettersetterprivate进行封装。将数据声明为私有的(private),再提供公共的public方法gettersetter实现对该属性的操作

  • 案例原始代码
class TestM {
    public int age;//TestM类的age属性被直接暴露给外部类,让调用者随意使用,可能会出问题
}
public class TestF{
    public static void main(String[] args) {
       TestM a=new TestM();
       a.age=1000;//age属性不仅被调用,还被乱修改值,逻辑性欠缺
       System.out.println(a.age);
    }
}
  • 案例使用封装思想后的代码
package test;

class TestM {
    private int age;//这里将public改成了private,age变量只有在当前类可以被访问

    public int getAge() { //getter 可使用快捷键Alt+insert添加
        return age;
    }

    public void setAge(int age) {//setter
        //加强逻辑控制
        if (age < 100 & age > 0) { 
            this.age = age;
        } else {
            System.out.println("请输入合理的年龄");
        }
    }
}

public class TestF {
    public static void main(String[] args) {
        TestM a = new TestM();
        a.setAge(200);
        System.out.println(a.getAge());
    }
}

/*
运行结果为:
请输入合理的年龄
0
*/

封装目的

  1. 隐藏一个类中不需要对外提供的实现细节
  2. 加入控制逻辑,限制对属性的不合理操作
  3. 便于修改,增强代码的可维护性
posted @ 2020-08-29 08:40  Whatever_It_Takes  阅读(113)  评论(0编辑  收藏  举报