Java程序设计基础 教学课件 ppt 作者 万忠 苏飞 第06章

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

《Java程序设计基础 教学课件 ppt 作者 万忠 苏飞 第06章》由会员分享,可在线阅读,更多相关《Java程序设计基础 教学课件 ppt 作者 万忠 苏飞 第06章(37页珍藏版)》请在金锄头文库上搜索。

1、第 6 章 类 设 计,6.1 Java引用数据类型 6.2 类 6.3 域 和 方 法 6.4 构造和初始化对象 6.5 方 法 重 载 6.6 this 关 键 字 6.7 类 的 继 承 6.8 多 态,6.1 Java引用数据类型,基本数据类型中的每一种类型表示的都是单独的一个数,它们定义的变量都是用来存储数据的,而引用数据类型中的每一种类型所表示的都是一种“结构”,每个“结构”都可以存储多个数据,由引用类型定义的变量称为引用变量。引用变量用来存储“结构”在内存中的“地址”。,6.2 类,类是对对象的抽象。用来描述“人”的类可以简单表示如下: class Person String n

2、ame; int age; char sex; ,图6-2 实体对应的一段内存,这段内存就称为类的一个“对象”,也称为类的一个“实例”。实例是使用new关键字生成的。其基本格式为: new类名(参数列表) 类的实例用一个引用变量表示。 Person zhangSan new Person(); zhangSan就是一个Person类型的引用变量,它的值是用new创建的实例的内存地址,如图6-3所示。,图6-3 实体的内存地址,使用“.”(点取操作符)连接引用变量和对象的成员。例如: zhangsan.name = “张三”; /给这个实例的name域设为字符串“张三”, 如图6-4所示。,图6

3、-4 设name域为张三,6.3 域 和 方 法,类可以描述为域和方法的集合,其中域表明对象应包含的信息,方法表明对象所具有的行为。,6.3.1 域 域用来表示对象的属性,它作为类的成员,也称为成员变量。 在类的初始化过程中会对域赋默认值 。 注意:当一个引用类型的变量作域时,其默认值为空(null),表示这个引用变量并不引用任何对象,Person类中的name域就是一个引用变量。,6.3.2 方法 类由域和方法组成。方法是类的动态属性,标志了类所具有的功能和操作,是用来完成某种程序片断。方法定义的一般格式如下( 表示可选成分): 返回值类型 方法名(形式参数列表) 方法体中的语句 ,6.4

4、构造和初始化对象,1内存分配,图6-5 给MyDate对象分配内存空间,2执行显式初始化,图6-6 初始化后的MyDate对象,3执行构造方法,图6-7 构造执行后内存中的实例,4给引用变量赋值,图6-8 构造结束时的实例,构造方法是一种特殊的方法,具有以下特点。 (1)构造方法的方法名必须与类名相同。 (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。 (3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。,(4)构造方法不能由编程人员调用,而要系统调用。 (5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统

5、会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。,6.5 方 法 重 载,Java语言允许在一个类中定义多个名字相同的方法,但是参数必须不同,在调用同名方法时要根据参数来决定调用哪个方法,这称为方法重载(overloading)。在定义重载的方法时特别强调的是方法的参数必须不同,所谓参数不同有三种情况,下面使用构造方法举例说明。,1参数数量不同 2参数类型不同 3参数顺序不同,6.6 this 关 键 字,6.6.1 使用this关键字区分局部变量和域 使用this关键字来区分域和局部变量 。 在一个类的每一个方法中都隐含了一个局部变量this,this变量在方法中表示调用这个方法

6、的对象,this的值是本对象的地址。,6.6.2 使用this关键字调用本类中的重载构造方法 可以使用this关键字来实现重载构造方法之间的相互调用。 注意:使用this调用重载的构造方法this必须是构造方法的第一条语句。,6.7 类 的 继 承,6.7.1 继承类 在定义子类时,使用extends关键字来指出这个类的父类。其格式为: calss 子类名 extends 父类名 子类的成员 子类可以把父类的成员作为自己的成员使用,而不必重新定义。,注意:任何类都有一个父类,如果一个类在定义时没有使用extends关键字声明继承自哪个父类,则其父类为Object类,这是一种隐含的声明。Obje

7、ct类是系统定义的Java类库的基类,是所有类的“祖先”,每个类中都继承有Object类的成员。请读者在Java语言文档中查阅Object类及其成员。,6.7.2 域的隐藏 子类能够继承父类的域。如果在定义子类时定义了和父类同名的域,这种情况称为域的隐藏。 当子类调用父类的方法时,父类的方法使用的是父类的域;当子类调用自己定义的方法时,方法使用的是子类自己定义的域。在子类方法中可以使用super关键字来引用父类的域。,6.7.3 方法的覆盖 方法覆盖的含义,即子类定义了和父类同名的方法,这样子类中就有了两个同名方法,一个是从父类继承的,一个是自己定义的。 注意:在进行方法覆盖时,子类要定义与父

8、类相同的方法,要求方法名、参数列表、返回类型完全相同。否则如果只是方法名相同,而参数不同,这时子类和父类的同名方法构成方法的重载。,方法名相同参数相同+返回类型必须相同(否则出错)覆盖 方法名相同参数不同重载 如果子类覆盖了父类的方法,还想要调用父类的方法,可以使用super关键字调用该方法。,6.7.4 子类的构造 在子类的构造方法中必须调用父类的构造方法,这是super关键字的第二种用法。 注意:使用super调用父类的构造方法时,必须在构造方法的第一条语句。在一个构造方法中,可以使用this调用本类中重载的构造器,使用super调用父类构造器,但都必须位于代码第一条语句,所以不能同时使用

9、。,对一个类中的构造方法来说,在它的第一条代码中,如果没有使用this调用本类中重载的构造方法,就必须使用super调用父类的构造方法。对于那些既没用this也没用super的构造方法,编译系统会在它的第一条语句插入没有参数的super调用: super( ); 这是一条隐含的语句。,注意:由于语句super( )调用父类的无参数构造方法,如果父类没有无参数的构造方法就会导致编译错误,特别是在父类只有带参数的构造方法的情况下,更容易发生错误。,super关键字有两种用法: 第一,标识父类成员。 第二,在构造方法中使用super来调用父类的构造方法。,6.8 多 态,多态是面向对象程序设计的又一

10、重要特性。多态是指一个引用变量能够引用其子类的对象,从而在运行时能表示不同的含义,具有不同形式的能力。,注意: 一个引用变量的类型是固定的,在定义时指定,不能改变。 一个引用变量能引用与其类型不同的对象,条件是:这些对象的类型必须是该引用变量的类型的子类。,6.8.1 虚拟方法调用 引用变量的类型可能和它所引用的对象类型不同,可以理解为引用变量在编译时的类型和运行时的类型可能不同。编译器在编译时检查语法,语法要求引用变量只能调用它本类及其父类的成员;在运行时,对象才是真正的主体,对象可以根据自身的类型来进行相应成员的调用,而不是根据引用变量的类型。,在多态情况下,可以调用的成员是有限的,这个方

11、法必须是被子类覆盖的方法,父类中要有这个成员,子类中也要有这个成员。由于调用哪个方法是在运行时确定的,所以这种设计方法称为虚拟方法调用,也称为动态绑定。,6.8.2 对象类型转换 Java语法规定了两个引用变量之间执行赋值操作: 引用变量1 = 引用变量2,有以下三种合法的赋值:第一,两个变量类型相同时,可以正确赋值。第二,右变量类型是左变量类型的子类时,能够自动进行转换。第三,右变量类型是左变量类型的父类时,需要进行强制类型转换才能赋值。使用类型转换操作符(类名)可以实现转换操作。 注意:两个变量的类型间,除以上关系外,其他关系均不能赋值,特别是兄弟关系。,转换只是为了满足语法要求,引用变量和对象并没有任何变化。,6.8.3 instanceof操作符 instanceof操作符的功能是对引用变量在运行时所引用对象的类型进行测试。其格式为: 对象instanceof类名 这个表达式返回的是逻辑值,当引用变量所引用的对象类型和类名相同时,表达式的值为true,否则为false。,

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

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

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