《JAVA》11类与对象_第1页
《JAVA》11类与对象_第2页
《JAVA》11类与对象_第3页
《JAVA》11类与对象_第4页
《JAVA》11类与对象_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、类与对象面向对象的封装性包访问修饰符类的封装类的静态成员变量的作用域关键字this主要主要内容内容11.1 11.1 包包Java语言使用包(package)来管理应用程序中的类,Java语言的每一个类都位于一个特定包中。没有指定类在哪个包中,这样定义的类位于默认包中,Java语言虽然允许但不推荐把类置于默认包中。使用包来管理类有四个优点:(1)把功能相近的类置于同一个包中便于查找类;(2)当编写的类被其他应用程序重用时,将类置于包中可以减少或避免命名冲突的情况出现;(3)使用包可以更加灵活的处理类及其成员的可访问性,更好地对类进行保护;(4)使用具有层次关系的包管理类,更加便于应用程序的发布

2、。11.1 11.1 包包Java语言的包是具有层次关系的,一个包中还可以包含子包。为包进行命名时,使用“.”分隔父包与其子包。例如包名java.lang说明顶层包为java,其中包含了lang子包;而类名java.lang.Math说明Math类位于包java.lang中。通常包名全部使用小写字母命名。 package语句的作用是把该源程序文件中定义的所有类置于同一个包中。下面通过一个例子说明如何把类置于指定包中。把类置于包中需要在源程序中使用package语句,该语句必须位于一个源程序文件中的第一条语句,其前面只能有注释。package语句的语法格式如下: package 包名;11.1

3、11.1 包包程序源码:/文件名:TestPackage.javapackage ch11.pkg01;/把源程序文件中的类置于ch11.pkg01包中 例11-1: 把类置于包中的例子。 public class TestPackage void printMessage() System.out.println(Welcome to java.); 11.1 11.1 包包使用包管理应用程序的类时,如果两个类不在同一包中,有两种方式:第一种方式是使用类的命名。 如: javax.Swing.JOptionPane第二种方式是使用import语句导入类。import语句有两种使用形式,例如:

4、 import javax.swing.*; /导入javax.swing包中的所有类 import javax.swing.JOptionPane; /导入JOptionPane一个类上面两种import方式对程序的编译和运行效率的影响是相同的。11.2 11.2 访问修饰符访问修饰符访问修饰符用来限制应用程序中类和类成员的使用范围,Java语言提供了public、protected、private三个访问修饰符实现四种访问范围。下表中列出了Java语言的四种访问范围。11.2 11.2 访问修饰符访问修饰符 访问修饰符同一类范围内同一包范围内子类范围内其他范围内publicprotecte

5、d无private11.2 11.2 访问修饰符访问修饰符11.3 11.3 类的封装类的封装类的封装是指合理使用访问修饰符,使类及其成员具有合理的访问范围。将指数据域用private修饰封装,不能直接为其他类访问,同时为每个数据域提供访问器方法和修改器方法。类和类中需要给其它类调用的方法成员用public修饰。11.3 11.3 类的封装类的封装访问器方法:public 数据类型 get属性名()修改器方法:public void set属性名(数据类型 形参)11.3 11.3 类的封装类的封装特别地,数据类型为boolean时,访问器方法定义为如下形式: public 数据类型 is属性

6、名()方法定义中数据类型通常为所封装的数据域的类型,访问器方法的代码直接返回数据域的值,修改器方法的代码直接把形参赋值给数据域。Retangle2.java演示11.4 11.4 类的静态成员类的静态成员Java语言的类包括静态成员和实例成员两种类型的成员。实例成员的概念前面已经讲述。使用static修饰的成员称为静态成员,包括静态数据域(也称类变量)、静态方法(也称类方法)。静态成员属于类本身,而不属于类的任何一个对象。11.4 11.4 类的静态成员类的静态成员 Retangle3.java演示 为Rectangle2类增加表示创建对象个数的静态数据域,及获取其值的静态访问器方法。新定义的

7、矩形类命名为Rectangle3。见 例11-2:实例数据域与静态数据域的区别是:实例数据域属于特定的对象,一个类 可以使用new运算符创建很多对象,每个 对象独立拥有自己的实例数据域。本例无 论创建多少个矩形对象,每个对象都独立 拥有自己的实例数据域width和height。实例数据域与静态数据域的区别是:静态数据域是类拥有的,所有创建的矩形对象以共享方式访问。本中的静态数 据域numberOfRectangles是所有创建 的矩形对象共享的。在访问修饰符允许的情况下,访问静态数据域的方式:对象引用变量.静态数据域 /不推荐使用该方式类名.静态数据域 /推荐使用该方式 实例方法与静态方法的区

8、别也在于静态方法是属于类的,可以在不创建对象的情况下通过类名调用。在静态方法中只能使用本类中的静态成员,不能使用实例成员,而在实例方法中静态和实例成员都可以使用。对静态方法的调用的形式:对象引用变量.静态方法(参数) /不推荐使用该方式类名.静态方法(参数) /推荐使用该方式11.4 11.4 类的静态成员类的静态成员11.5 11.5 变量的作用域变量的作用域一个类中的变量主要有类的数据域和局部变量两种形式。其中局部变量的使用在方法一章有过介绍。本节将在类的范围内讨论所有变量的作用域。局部变量是指在类的方法中定义的变量,不能使用访问修饰符限制作用域,其作用域为定义变量的语句开始到该语句所属的

9、语句块的右大括号。类的数据域在类内部的作用域与访问修饰符无关,无论在类的任何位置定义数据域,其作用域均为整个类范围,见图(a)。一个特殊情况是某数据域的初始化时使用了另一个数据域,此时被使用的数据域必须定义在前面,如图 (b)所示。 Java语言允许类方法中的局部变量与类的数据域同名。这种情况下,在定义局部变量的方法内部,局部变量将屏蔽数据域,即局部变量有效。参见如下程序代码:public class Sample private String name = 张三; /数据域 public void printName() String name = 李四; /局部变量,屏蔽了数据域name

10、System.out.println(name= + name); /输出局部变量的值 执行语句后,输出结果是局部变量的值“李四”。11.6 11.6 关键字关键字thisthis类的实例方法中有时会需要引用该类的当前对象,从而访问当前对象数据域或调用当前对象的实例方法。Java语言使用关键字this表示对类的当前对象的引用。类的实例方法中可以用如下方式对当前对象的数据域或方法进行引用: this.数据域 /引用当前对象的数据域this.实例方法(参数) /引用当前对象的实例方法11.6 11.6 关键字关键字thisthis关键字this另外一种用途,是在类的一个构造方法中直接调用另外一个构造方法。这种调用不创建对象,只是将程序流程由当前构造方法转到被调用的构造方法执行,返回后继续执行当前构造方法的剩下的语句。其使用形式如下: this(参数);11.6 11.6 关键字关键字thisthis类的实例方法中有时会需要引用该类的当前对象,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论