一、封装(encapsulation)
封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。封装的特性使得类(对象)以外的部分不能随意存取类(对象)的内部数据(属性),保证了程序和数据不受外部干扰且不被误用。
这个怎么理解呢?首先来看一个列子。
已知一个类Animal,该类的属性和方法如下表所示:
属性
说明
方法
说明
String name
名称
Animal()
无参构造函数,为属性设置初始值
Int age
年龄
Animal(String name,int age)
有参构造函数,为属性设置变量值
根据该类的定义,编写一个程序,输出该类的初始值以及通过变量设置的初始值,程序代码如下
public class AnimalDemo{
public static void main(Stringargs[]){
Animal a=new Animal();
Animal b=new Animal("cat",5);
System.out.println(a.name+"is "+a.age+" years old");
System.out.println(b.name+"is "+b.age+" years old");
}
}
程序执行结果:
Dog is 3 years old
cat is 5 years old
由此可以知道,类Animal的无参构造函数为name属性赋值为“Dog”,为age属性赋值为“3”。因此,可以写出类Animal的代码如下:
class Animal {
String name;
int age;
Animal(){
name="Dog";
age=3;
}
Animal(Stringname,int age){
this.name=name;
this.age=age;
}
}
实际上这就是上一篇文章中的例子,那么封装在这里的含义如下:
l 类本身就实现了封装功能,此处类Animal定义了两个属性,两个构造函数,其只属于Animal类。
l 通过访问修饰符来限制对类的属性和方法的访问,各修饰符含义如下:
Private:成员变量和方法只能在类内被访问,具有类可见性
默认: 成员变量和方法只能被同一个包里的类访问,具有包可见性。
Protected:可以被同一个包中的类访问,被同一个项目中不同包中的子类访问
Public&#