类的三大特性包括:封装、继承、多态
一、 封装
**1.含义:**封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。
封装和继承几乎都是为多态而准备的。
封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。
2.封装的实现
2.1 需要修改属性的访问控制符(修改为private);
2.2 创建getter/setter方法(用于属性的读写);
2.3 在getter/setter方法中加入属性控制语句(用于判断属性值的合法性);
属性 (成员变量 ) 随对象存放在堆中
直接通过对象调用属性,修改属性值是不安全的,那怎么办?
为了实现良好的封装,我们通常将类的成员变量声明为private,为了能够在外部使用,可以通过定义public方法来对这个变量来访问。对一个变量的操作,一般有读取和赋值2个操作,我们分别定义2个方法来实现这2个操作,一个是getXX(XX表示要访问的成员变量的名字)用来读取这个成员变量,另一个是setXX()用来对这个变量赋值
Boolean的get方法默认名为isXXX()
把成员变量设置为私有的,只能在本类中使用,所以属性也叫全局变量。
3. 封装的优点
3.1 将变化隔离
3.2 便于使用
3.3 提高重用性
3.4 提高安全性
4. 封装的缺点:
将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度!
实例:
public class People {
/*
* 对属性的封装一个人的姓名、年龄
*/
private String name;
private int age;
/*
* setter()、getter()是该对象对外开发的接口
*/
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;
}
}