Java面向对象-封装
封装这个词听起来好像是将什么东西包裹起来不要别人看见一样,就好像是把东西装进箱子里面,这样别人就不知道箱子里面装的是什么东西了。其实 JAVA 中的封装这个概念也就和这个是差不多的意思。
Java的封装概念:
封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。是 JAVA 面向对象的特点的表现,封装是一种信息隐蔽技术。它有两个含义:即把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位;以及尽可能隐藏对象的内部结构。也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的功能:
隐藏对象的实现细节
迫使用户去使用一个界面访问数据
使代码更好维护
封装迫使用户通过方法访问数据能保护对象的数据不被误修改,还能使对象的重用变得更简单。数据隐藏通常指的就是封装。它将对象的外部界面与对象的实现区分开来,隐藏实现细节。迫使用户去使用外部界面,即使实现细节改变,还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作。封装使代码维护更简单。
封装的优点:
良好的封装能够减少耦合。
类内部的结构可以自由修改。
可以对成员变量进行更精确的控制。
隐藏信息,实现细节。
封装的步骤:
封装是在一个类里面
修改属性的可见性来限制对属性的访问(一般限制为private)
对每个值属性提供对外的公共方法访问,也就是创建getter 和 setter方法
创建getter 和 setter方法:
将实例变量的首字母大写,在前面添加get或者set, 变成getter 和 setter方法名
格式:
修饰符 关键字(类)类名{
实例变量定义格式:
private 数据类型 实例变量;
该类的构造方法
[修饰符] 类名 (形参列表){构造器方法体代码}
get读格式:
修饰符 返回值类型 getter方法名(返回值类型 实例变量) { return 实例变量;} ;
set写格式:
修饰符 返回值类型 setter方法名(返回值类型 实例变量) { 关于实例变量执行的表达式}
}
例子: