基本概念
封装是面向对象三大特性之一,
封装(encapsulation)就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作[方法],才能对数据进行操作。
生活中多处可见封装的实际例子,比如我们离不开的手机,电脑之类的,他们的内部复杂结构被外壳封装起来,封装之后作为使用者的我们不需要知道内部结构,会用就好了。
那封装的作用是什么呢?
第一就是保护了内部结构,保证了它的安全。第二就是隐藏实际细节,简单来说屏蔽复杂,暴露简单。
实现步骤
封装的实现步骤:
(1)把属性私有化
(2)对外提供简单的操作入口
那代码说话…
第一步:属性私有化
public class Person {
private String name;
private int age;
private String number;
}
第二部:提供接口
对外提供公共的(public)方法set和get,用来查询和修改属性。
public class Person {
private String name;
private int age;
private String number;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
然后就可以用提供的接口修改和访问属性
public class People {
public static void main(String[] args) {
//创建对象
Person p1=new Person();
//给属性赋值
p1.setName("jack");
p1.setAge(22);
p1.setNumber("13399962389");
//访问属性
System.out.println("p1的信息如下");
System.out.println("名字:" + p1.getName());
System.out.println("年龄:" + p1.getAge());
System.out.println("电话:" + p1.getNumber());
}
}
运行结果:
如果没有这个公共方法的话,我们是没办法直接访问或者修改属性的
比如这样写:
public class People {
public static void main(String[] args) {
//创建对象
Person p1=new Person();
//给属性赋值
p1.name="jack";
//访问属性
System.out.println("姓名:"+ p1.name);
}
}
运行结果: