JavaSE 基础 - 第10章 封装
1、封装
1.1、面向对象的三大特征:封装、继承、多态
有了封装,才有继承,有了继承,才能说多态。
1.2、面向对象的首要特征:封装 。什么是封装?有什么用?
现实生活中有很多现实的例子都是封装的,例如:
手机,电视机,笔记本电脑,照相机,这些都是外部有一个坚硬的壳儿。
封装起来,保护内部的部件。保证内部的部件是安全的。另外封装了之后,
对于我们使用者来说,我们是看不见内部的复杂结构的,我们也不需要关心
内部有多么复杂,我们只需要操作外部壳儿上的几个按钮就可以完成操作。
那么封装,你觉得有什么用呢?
封装的作用有两个:
第一个作用:保证内部结构的安全。
第二个作用:屏蔽复杂,暴露简单。
在代码级别上,封装有什么用?
一个类体当中的数据,假设封装之后,对于代码的调用人员来说,
不需要关心代码的复杂实现,只需要通过一个简单的入口就可以访问了。
另外,类体中安全级别较高的数据封装起来,外部人员不能随意访问,
来保证数据的安全性。
2、封装的代码实现的两步
第一步:属性私有化
使用private关键字进行修饰。
private 表示私有的,被这个关键字修饰之后,该数据只能在本类中访问。
出了这个类,age属性就无法访问了。私有的。
第二步:对外提供简单的操作入口。
1个属性对外提供两个set和get方法。
外部程序只能通过set方法修改,只能通过get方法读取,可以在set方法中设立关卡来保证数据的安全性。
再强调一下:
set和get方法都是实例方法,不是静态方法,不能带static。
不带static的方法称为实例方法,实例方法的调用必须先new对象。
set和get方法写的时候有严格的规范要求:(大家要按照规矩来)
get方法长这个样子:
public 返回值类型 get+属性名首字母大写(无参){
return xxx;
}
set方法长这个样子:
public void set+属性名首字母大写(1个参数){
xxx = 1个参数;
}
【例:】
// get方法
public int getAge(){
return age;
}
// set方法
public void setAge(int nianLing){
// 能不能在这个位置上设置关卡!!!!
if(nianLing < 0 || nianLing > 150){
System.out.println("对不起,年龄值不合法,请重新赋值!");
return; //直接终止程序的执行。
}
//程序能够执行到这里,说明年龄一定是合法的。
age = nianLing;
}
通过“类名.方法名(实际参数列表)”可以调用set和get方法吗?不行。
只有方法修饰符列表中有static的时候,才能使用“类名.方法名(实际参数列表)”的方式访问
// 创建对象
Person p1 = new Person();
//调方法,通过“引用.”的方式
p1.setAge(20);
System.out.println(p1.getAge()); //20
传送门
上一章:JavaSE 基础 - 第九章 对象的创建和使用
下一章:JavaSE 基础 - 第十一章 this和static