Java(12)封装和隐藏(面向对象特征一)
封装和隐藏(面向对象特征一)
利用getter
、setter
、private
进行封装。将数据声明为私有的(private
),再提供公共的public
方法getter
和setter
实现对该属性的操作
- 案例原始代码
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
*/
封装目的:
- 隐藏一个类中不需要对外提供的实现细节
- 加入控制逻辑,限制对属性的不合理操作
- 便于修改,增强代码的可维护性