标签:
封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节
简单说,封装就是将属性私有化,提供公有的方法访问私有属性。
为什么要将属性私有化呢?下面我们来举个例子:
首先创建一个简单的Person类
class Person {
String name;
int age;
void print(){
System.out.println("name:"+name+"\nage:"+age);
}
}
然后在main方法里调用
public static void main(String[] args) {
Person p = new Person();
p.name = "john";
p.age = 18;
p.print();
}
显然输出结果为:
name:john
age:18
但是,万一一不小心给age赋值成了180呢?虽然在语法上不会产生错误,但这是不合理的。通过封装就可以对age的取值做一个限定。现在,我们把Person类里的属性私有化
private String name;
private int name;
私有化之后,外部就无法调用这些变量了,但是不能调用这些变量的话类的存在也就没什么意义了,所以,我们需要让外部可以通过另一种途径来访问类的成员变量,但是又要对外来者的获取轨定限制。
通过get和set方法将2个属性封装起来。
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age <= 0 || age > 100) {
this.age = 1;
} else {
this.age = age;
}
}
这样就防止了我们设置一些不符合情理的值。也就避免了外部随意地获取类里面的成员变量啦。
之前看过一个例子,也很形象。
转载注明出处http://www.cnblogs.com/epilogue/p/5672031.html
标签:
原文地址:http://www.cnblogs.com/epilogue/p/5672031.html