类的封装:访问控制和数据隐藏

 

“封装”是面向对象的三大特性之一。封装能够隐藏对象的属性和实现的细节,对外提供公共的访问方式。x0a本文首先介绍访问控制,然后通过数据隐藏来引入封装的概念。...



“封装”是面向对象的三大特性之一。封装能够隐藏对象的属性和实现的细节,对外提供公共的访问方式。讲解该特性之前,需要先了解Java的访问控制。

 1. Java的访问控制方式

Java类的成员(成员变量或成员方法)提供了从权限较大到权限较小的四种访问控制方式:public、protected、default和private。其中private、protected和public是关键字,其作用如下:

Ø  公有访问权限:用public修饰,成员可以被任何类访问。

Ø  保护访问权限:用protected修饰,可以被同一包中或子类访问。

Ø  缺省访问权限:也称“包私有(package private)”访问权限,使用时不加任何访问控制修饰符,可以被同一包中的类访问。

Ø  私有访问权限:用private修饰,只能在同一个类中被访问。

如下表所示:

同一个类

同一个包

不同包的子类

不同包的非子类

public









protected







default





private



2. 数据隐藏与类的封装

前面提到,类中的成员变量来描述状态,成员方法来描述行为;从另一个角度来看,可以将类中的成员变量看作数据,而将类中的成员方法看作对数据的操作。通常,类中的数据不应该让外界随意访问,而应通过一定逻辑(如单位换算、数值检查、形式转换等)来访问,而这些逻辑存放的合适地方就是类的成员方法,这就是“数据隐藏”的基本思想。因此可以将成员变量设置为私有(private),将涉及操作成员变量的成员方法设置为公有(public),这是类的封装的一种常见形式。

例如,下面程序中的Date类表示几月几日这样的日期,我们都知道,月和日的具体数值不能随便赋值,因此将month和day这两个成员变量的访问权限设置为私有(private),而将操作它们的两个成员方法setMonth( )和setDay( ) 的访问权限设置为公有(public),并将数据检查放在方法中。

                           


    关注 洛师Java教学


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册