一聚教程网:一个值得你收藏的教程网站

热门教程

封装机制封装的概念

时间:2022-11-14 23:26:37 编辑:袖梨 来源:一聚教程网

4.2




4.2.1
封装的概念
封装也称为信息隐藏,是指利用抽象数据类型将数据和基于
数据的操作封装在一起,使其构成一个不可分割的独立实体,数
据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只
保留一些对外接口使之与外部发生联系。系统的其他部分只有通
过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与
交互。也就是说,用户无需知道对象内部方法的实现细节,但可
以根据对象提供的外部接口(对象名和参数)访问该对象。封装具
有下述特征:
第4章 类 与 对 象
(1) 在类的定义中设置访问对象属性(数据成员)及方法(成
员方法)的权限,限制本类对象及其他类的对象使用的范围。
(2) 提供一个接口来描述其他对象的使用方法。
(3) 其他对象不能直接修改本对象所拥有的属性和方法。
第4章 类 与 对 象
封装反映了事物的相对独立性。封装在编程上的作用是使
对象以外的部分不能随意存取对象的内部数据(属性),从而有效
地避免了外部错误对它的“交叉感染”。另一方面,当对象的内
部做了某些修改时,由于它只通过少量的接口对外提供服务,
因此大大减少了内部的修改对外部的影响。
面向对象系统的封装单位是对象,类概念本身也具有封装
的意义,因为对象的特性是由它所属的类说明来描述的。
第4章 类 与 对 象
4.2.2
类的严谨定义
在4.1.5节中,我们已经给出了定义类的一般格式,那时我
们给出的类的结构是:
class 类名
{ 数据成员
成员方法
}
第4章 类 与 对 象
这一结构定义只给出了定义一个类所必不可少的内容,而忽略
了类定义的许多细节。有了封装的概念后,我们就可以进一步
来学习类的严谨定义。类的严谨定义格式如下:
[
类修饰符] class
类名
[extends
父类名] [implements
接口列
表]
{
数据成员
成员方法
}
第4章 类 与 对 象
可以看出,在类的严谨定义格式中,类的说明部分增加了
[类修饰符]、[extends父类名]和[implements 接口列表]三个可选
项。合理地使用这些可选项,就可以充分地展示封装、继承和
信息隐藏等面向对象的特性。由于这部分内容比较庞杂,我们
在这里做一简要说明后,将分别在此后的章节中详细讨论。
● 类修饰符(qualifier):用于规定类的一些特殊性,主要是
说明对它的访问限制。
第4章 类 与 对 象
● extends 父类名: 指明新定义的类是由已存在的父类派生
出来的。这样,这个新定义的类就可以继承一个已存在类————父
类的某些特征。
● implements 接口列表: Java本来只支持单继承,为了给
多重继承的软件开发提供方便,它提供了这一接口机制。
第4章 类 与 对 象
4.2.3
类修饰符
类的修饰符用于说明对它的访问限制,一个类可以没有修
饰符,也可以有public、final、abstract等几种不同的修饰符。
它们的作用是不同的,下面分别予以介绍。
1
.无修饰符的情况
如果一个类前无修饰符,则这个类只能被同一个包里的类
使用。Java规定,同一个程序文件中的所有类都在同一个包中。
这也就是说,无修饰符的类可以被同一个程序文件中的类使
用,但不能被其他程序文件中的其他包中的类使用。
第4章 类 与 对 象
【示例程序c4_4.java】
class pp //无修饰符的类pp
{ int a=45; //pp类的数据成员a
}
public class c4_4 //公共类c4_4
{
public static void main(String[ ] args)
{ pp p1=new pp( );//类c4_4中创建了一个无修饰符类pp的对象p1
System.out.println(p1.a);
}
}
第4章 类 与 对 象
在这个程序中定义了两个类:无修饰符的类pp和公共类
c4_4。它们是同一个程序文件(即同一个包)中的两个类,所
以,在类c4_4中可以创建pp类的对象p1,且对象p1可以引用类
pp的数据成员a。关于数据成员的访问限制,将在4.3节中论述。
第4章 类 与 对 象
2
.public
修饰符
如果一个类的修饰符是public
,则这个类是公共类。