面向对象编程
封装性
1) What is Encapsulation?
封装性是面向对象编程的特征之一。
封装性,本质上是指对对象
的隐藏
和暴露
,使得完成对对象
的某种操作时可以忽略隐藏
的具体实现细节,而通过直接使用暴露
出的接口完成。
这里的对象
不仅仅是指类的实例化
,也包括`类
、属性和
方法等
成员。或者可以说本质上就是指
数据,
对象本质上就是一种自定义类型的数据,
类本质上是一种
class型数据,
属性和
方法等
成员`本质上也是一种数据。
封装性的体现:
- 使用某个
类
时,该类
内部使用了其他类
,但在使用该类
时无需关心其内部其他类
,换句话说这个其他类
本身就只是用于实现该类
的,因此隐藏
这个其他类
,仅暴露该类
。 - 操作某个
属性
时,隐藏
实现对该属性
的该操作
细节该属性
及,仅暴露
一个进行该操作的接口。换句话说,对该属性
的任何操作,仅通过暴露
出的接口实现。 - 调用某个
方法
时,隐藏
该方法内部使用的其他方法
或属性
,这些方法
和属性
是只用来实现该方法
的,因此,仅暴露
该方法实现对应操作。
封装性的作用:
- 使得代码层次结构清晰,易于维护和扩展。
- 使得外部易于使用。
2) 四种权限修饰符
Java中是通过4种权限修饰符
实现封装性
的。
private
default
:没有任何权限修饰符时,就是default
,default
不需要额外写在对象
的开头修饰。protected
public
权限修饰符
是用于对类
和类中的成员
实现封装性,最高的权限为当前整个工程内
,最低的权限为当前类内
(对于成员
)或当前包内
(对于类
),权限限定就在类
和包
两个范围:
类
只使用两种权限修饰符
:default
:权限为当前包
内的类
。public
:相比于default
,权限扩展到包括其他包内的类,即整个工程
的类都可以使用public
修饰的类
。
成员
使用四种权限修饰符
:private
:权限为当前类
内。default
:权限扩展到为当前包
内的类
内。protected
:权限扩展到为包括其他包内的子类
内。public
:权限扩展到为整个工程
内。
3) 练习
类的成员:构造器
1) What is constructor?
构造器,也称为构造方法,constructor,本质上是专门用于创建对象
的没有返回值的方法。
构造器的格式为:权限修饰符 类名(参数)
,构造方法名与类
名相同。
类的实例化
,或者说创建类
的对象
的格式为new 构造方法名(参数)
。
每个类
都会有构造器
。
对于任何一个类
,如果没有显式地定义其构造器
,则系统会默认提供一个空参构造器
。
只要显式地定义了构造器
,系统就不会再提供空参构造器
。
一个类
中的多个构造器
构成重载
。
定义构造器
主要是用于创建对象的同时,实现对对象信息如属性
的初始化。
2) 练习