Java程序设计 教学课件 ppt 作者 朱喜福 第3章

上传人:E**** 文档编号:89399353 上传时间:2019-05-24 格式:PPT 页数:97 大小:222.51KB
返回 下载 相关 举报
Java程序设计 教学课件 ppt 作者  朱喜福 第3章_第1页
第1页 / 共97页
Java程序设计 教学课件 ppt 作者  朱喜福 第3章_第2页
第2页 / 共97页
Java程序设计 教学课件 ppt 作者  朱喜福 第3章_第3页
第3页 / 共97页
Java程序设计 教学课件 ppt 作者  朱喜福 第3章_第4页
第4页 / 共97页
Java程序设计 教学课件 ppt 作者  朱喜福 第3章_第5页
第5页 / 共97页
点击查看更多>>
资源描述

《Java程序设计 教学课件 ppt 作者 朱喜福 第3章》由会员分享,可在线阅读,更多相关《Java程序设计 教学课件 ppt 作者 朱喜福 第3章(97页珍藏版)》请在金锄头文库上搜索。

1、第3章 类、类的继承和接口,3.1 类 3.2 包的创建和使用、源文件结构 3.3 类的继承和多态 3.4 接口和接口的实现 3.5 内部类和匿名内部类 3.6 综合实例简单的加密解密程序,3.1 类, Java中类的最简单的定义格式如下: 类的修饰符 class 类名 extends 父类名 变量声明; 构造方法定义; 其他方法定义; , 创建一个类的对象的格式如下: 类名 对象名=new构造方法(实际参数); 在类的外部,访问类中的变量和调用类中的方法格式如下: 对象名.变量名 对象名.方法名(实际参数),3.1.1 类的修饰符 1类访问权限修饰符: public(公共的) 用关键字pub

2、lic修饰一个类,表明该类可以被任何其他类使用。如果一个类没有public修饰符,则这个类只能在它所在包中访问。,2abstract(抽象的) 用abstract修饰的类是一个不完整的类,称为抽象类,因为该类中含有没有方法体的抽象方法。抽象类没有具体实例。 3final(最终的) 用final修饰的类称为最终类。最终类不能有子类。,3.1.2 类的成员 一个类定义中可以有以下3种类型的成员。 1域(field) 通常类中声明的变量称为域,用来描述类的属性或状态。一个类中的域既可以是基本数据类型,也可以是其他类的对象等。,2方法(method) 是对类中变量进行操作的可执行代码序列,定义了该类对

3、象所具有的行为。 3内部类 定义在一个类里面的类。,3.1.3 域、域的访问控制修饰符和其他修饰符 1域的初始化 一个类中如果没有定义构造方法,则编译器会自动生成一个没有参数的构造方法,用来初始化类对象,并将类中变量自动初始化为该类型的默认值。, 整型初始化为0; 实型初始化为0.0f、0.0d; 逻辑型初始化为false; 字符型初始化为 u0000; 类对象初始化为null,表明引用不指向任何内存地址。,2声明其他类对象作为一个类的域 类的域(变量)可以是基本数据类型,也可以是其他类的对象。如果一个类定义中包含另一个类的实例,通常称为“HAS-A”,表示包含关系,即一个类实例“具有”对另一

4、个类实例的引用。,3域的访问控制 类的域在类的里面都是可见的,类中的所有方法都可以使用它们。 在类的外部,类中域的可见性由关键字public、private、protected来控制,称为类的域的访问权限修饰符。,4种访问权限所使用的修饰符和含义如下。 public:用public修饰的成员可以被所有其他的类来访问。 private:类中限定为private的成员只能被这个类本身访问,在类的外部,类的private成员是不可见的 。, protected:类中限定为protected成员。只有其子类(不论是否在同一个包中)以及同一个包内的其他类,才能访问该类的protected成员。 缺省的:

5、如果类成员的访问权限没有设定,这时类的成员具有包访问权限。 请注意,方法定义中的参数和方法体中的变量都是局部变量,不能使用上面的访问权限修饰符。,4封装和公开 如果把类中的变量用public修饰,则这些变量完全公开,可以直接访问和修改。 面向对象程序设计中,通过类和类成员的访问控制级别的限定,较好地解决了封装和公开的问题。如果将成员变量标识为private,则它在类的外部不可见,使数据得到了封装。为了能够访问这些私有数据,就必须提供public或者protected的成员方法来获取(get)和设置(set)这些private变量的值。,通常获取和设置private变量的方法命名采用以下形式:

6、public|protected 变量类型 get变量名() return 变量名; public|protected void set变量名(类型 参数名) 合法性检查并赋值; ,5静态域 类中的变量用来描述该类对象的属性,它们与每个具体对象相关联,因此也把它们称为类的实例变量。用static修饰的变量称为静态变量或静态域。,当一个变量用static修饰时,表明它不属于任何一个类的具体对象,而是所有对象共享,static变量只有一个拷贝,这个存储单元被所有对象共享。该类的任何一个对象访问和修改它时,都是对这个共享的存储单元进行操作。,由于静态变量属于整个类,即使没有创建任何对象时,类中的st

7、atic变量也会存在,也可以使用静态变量,这时可以通过类名作前缀访问静态变量: 类名.静态变量 若创建了某个类的具体对象后,可以通过类名或对象名作前缀访问静态变量: 对象名.静态变量,6最终域(final) 若类中的变量用关键字final修饰,则表明该变量一旦被显示的值(不能默认初始化)初始化后就不可能重新再赋值。因此,final修饰的变量通常是程序中不能改变的常量 。 public static final 类型 常量名=初始值; 常量名大写,名字中包含多个单字时用下划线分隔。,圆周率常量Math.PI、自然常数Math.E等。基本数据类型包装类中的int类型的最大值Integer.MAX_

8、VALUE、最小值Integer.MIN_VALUE等。 用final修饰的引用变量,也不能重新赋值来引用另一个对象,但可以修改final修饰的引用对象内的数据。,7域的声明格式 public | protected | private static final transient volatile 类型名 成员变量名;,3.1.4静态方法、抽象方法和最终方法 1方法的访问控制修饰符 方法作为类的成员也有4种访问权限:public、private、protected和缺省的(没有访问控制修饰符)。,2静态(static)方法 用static修饰的方法称为静态方法,它不属于类的具体对象,而是整个

9、类的类方法。 如果一个方法总是以相同的方式运行,即它的运行与类的任何实例没有关系,其行为与对象的状态(实例变量的值)无关,这时该方法就应该用static修饰,使其成为静态方法。,两种方式调用静态方法: 类名.静态方法 对象名.静态方法 一个类里面的静态方法中只能处理静态变量;静态方法中只能调用静态方法。下面的程序编译时出现错误提示。,3最终(final)方法 关键字final可用来修饰类中的方法,称为最终方法。将一个方法标识为final的主要目的是防止子类重新定义继承自父类的方法。,4抽象(abstract)方法 用关键字abstract修饰的方法,称为抽象方法。抽象方法只有方法头,没有方法体

10、,而是以一个分号结束。抽象方法的声明通常出现在抽象类和接口中,这些内容将在本章3.3节和3.4节讲述。 方法修饰符abstract和final不可能同时使用。,5方法的定义格式 方法的定义格式如下: public | protected | private /指明方法的访问控制级别 static /指明是整个类拥有的类方法 final | abstract /不能同时使用 native /指明是本地方法 synchronized /指明是同步方法 返回值类型 方法名(参数列表) throws 异常 .; ,3.1.5 构造方法 1构造方法的规则 构造方法名称必须与类名相同。 构造方法一定不能有

11、返回值类型。 构造方法可以使用3种访问控制修饰符public、protected、private或缺省的,对应的访问级别与类成员一样。, 构造方法不能用static修饰,因为构造方法只用于创建类的实例。 如果类中不定义任何构造方法,编译器会自动生成默认的无参数的构造方法;如果类中定义了构造方法,编译器不会自动生成默认构造方法。, 类中的构造方法可以根据需要重载多个参数列表不同的版本。这些重载的构造方法可以相互调用,但必须通过this()调用,且必须作为构造方法内的第一条语句。本节后面将讲述构造方法的this调用。 子类构造方法中可以调用其直接父类的构造方法,但必须通过super()调用,且必须

12、作为子类构造方法内的第一条语句。,2构造方法的重载 当一个类因构造方法的重载而存在多个构造方法时,创建该类的对象的语句会根据给出的实际参数的个数、参数的类型、参数的顺序自动调用相应的构造方法来完成对象的初始化工作。 当一个类有多个重载的构造方法时,构造方法里面可以调用类的其他构造方法,但必须通过this()调用,且必须作为构造方法内的第一条语句。,3.1.6 关键字this 类定义中使用this,当创建该类的对象后,this代表类对象自身。 类中通过this、后跟圆点运算符,之后是类的实例变量名或实例方法名可以使用本类中的变量和方法。, 静态变量和静态方法不能通过this作前缀来使用。 类中有

13、多个重载的构造方法时,构造方法中可以通过this()调用其他构造方法,但必须是构造方法中的第一条语句。,3.1.7 抽象和封装 Java编程首要的任务之一就是创造新的数据类型类,并描述这些数据类型对象之间的交互。通过对同一类对象的共同属性抽象出来并用数据(变量)来描述,把对象的动态特征抽象为行为,用方法来描述。,通过组织包、设定类的访问权限和类成员的访问权限,使类这种数据类型对类的客户隐蔽其实现细节,从而实现数据封装。通过对象的封装,实现了模块化和信息隐藏,有利于程序的可移植性和安全性,同时也利于对复杂对象的管理。,3.1.8 对象的清除 对象的生命周期分为3个阶段:生成、使用和清除。一个类对

14、象必须先声明,通过new运算符开辟内存空间,使用构造方法对类对象初始化后,然后才能使用该对象。 Java中,清除无用对象所占据的内存空间是通过Java的内存垃圾自动收集机制实现的。,3.2 包的创建和使用、源文件结构,3.2.1 包 Java中的包(package)是用来把一些相关的类、接口放在一起的组织结构,它是一个相对独立的软件单元,可以简单地理解为放置这些类和接口的文件夹。,Java语言中的类库是以包的形式组织的。java命名的核心类库和以javax命名的扩展类库。例如:java.lang包、java.applet包、java.awt包、java.io包和javax.swing包等。包中

15、也可以有子包,java.awt.event包,它是java.awt包中的子包。 命名一个包的名字都小写,包名具有层次,这种层次关系的分隔用句点表示。,3.2.2 创建包和使用包中的类 1创建包 Java中使用关键字package创建一个包。创建包语句的格式如下: package 包名.下一级包名.; 该语句必须是Java 源文件中的第一条语句(除注释行外)。 如果源文件没有包定义语句,则Java认为它在缺省包(没有包名的包)中。,2导入包中的类 使用import语句导入包中的类。 import 包名.类名; 如果程序中用到了包中的多个类,可用通配符*导入包中的所有类,其形式为: import

16、包名.*; 在程序中用到该类的地方,使用类的完全限定名“包名.类名”,3classpath环境变量的设置 Java中,通过设置环境变量classpath的值来指明编译运行程序时所需的类(字节码文件)的路径。 程序中导入用户自定义包中的类,必须设置classpath环境变量的值,指明要导入的类的路径,否则程序编译出错。,set classpath=%classpath%;e:gzk; 上面的%classpath%表示原来的classpath路径,e:gzk是用户的包所在的路径(根据用户的设置而不同)。,3.2.3 源文件结构和程序说明文档的生成 1源文件结构 Java源文件和代码书写有很多规则,总结如下。 每个源文件只能有一个公共类(public class),文件名必须与公共类的名称完全相同,文件的后缀名为j

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号