第四讲类对象和接口

收藏

编号:214439303    类型:共享资源    大小:192.50KB    格式:PPT    上传时间:2023-05-29
10
积分
关 键 词:
第四 对象 接口
资源描述:
第四讲第四讲 类、对象和接口类、对象和接口4.1 4.1 编程语言的几个发展阶段编程语言的几个发展阶段4.2 4.2 类类4.3 4.3 对象对象4.4 static 4.4 static 4.5 this 4.5 this 4.6 4.6 包包4.7 4.7 访问权限访问权限4.8 4.8 类的继承类的继承4.9 4.9 对象的上转型对象对象的上转型对象4.10 4.10 多态性多态性1 1第四讲第四讲 类、对象和接口类、对象和接口4.11 abstract 4.11 abstract 类和类和abstractabstract方法方法4.12 super4.12 super关键字关键字4.13 4.13 接口接口4.14 4.14 内部类内部类4.15 4.15 匿名类匿名类4.16 4.16 异常类异常类4.17 Class4.17 Class类类4.18 4.18 基本类型的类包装基本类型的类包装4.19 4.19 反编译和文档生成器反编译和文档生成器4.20 jar4.20 jar文件文件2 2第四讲第四讲 类、对象和接口类、对象和接口 一、教学目的一、教学目的 理解类、对象和接口之间的关系,熟练掌理解类、对象和接口之间的关系,熟练掌握类的设计方法、对象的使用方法,接口的定握类的设计方法、对象的使用方法,接口的定义方法,熟练运用实例成员和类成员编写程序,义方法,熟练运用实例成员和类成员编写程序,了解包的基本使用方法。了解包的基本使用方法。二、教学内容:二、教学内容:本章主要介绍类和对象之间的关系,握类本章主要介绍类和对象之间的关系,握类的设计方法、对象的使用方法,以及包的基本的设计方法、对象的使用方法,以及包的基本使用方法。使用方法。3 3第四讲第四讲 类、对象和接口类、对象和接口三、重点及难点内容:三、重点及难点内容:重点:重点:1、仔细体会面向对象编程的思想;、仔细体会面向对象编程的思想;2、熟练理解类和对象的概念,理解面向、熟练理解类和对象的概念,理解面向对象的特性;对象的特性;3、会编写简单的类,逐渐掌握面向对象、会编写简单的类,逐渐掌握面向对象编程的方法。编程的方法。四、难点:四、难点:面向对象编程思想的建立。面向对象编程思想的建立。4 4第四讲第四讲 类、对象和接口类、对象和接口四、课前思考四、课前思考 1、什么是对象?什么是类?、什么是对象?什么是类?2、面向对象编程的特性有哪三个?它面向对象编程的特性有哪三个?它们各自又有哪些特性?们各自又有哪些特性?3、你知道你知道java语言在面向对象编程方面语言在面向对象编程方面有何独特的特点吗?有何独特的特点吗?5 54.1编程语言的几个发展阶段 1、机器语言(汇编语言)、机器语言(汇编语言)计算机处理信息的早期语言是所谓的机器语言,计算机处理信息的早期语言是所谓的机器语言,计算机处理信息的早期语言是所谓的机器语言,计算机处理信息的早期语言是所谓的机器语言,这种语言中的指令都是由这种语言中的指令都是由这种语言中的指令都是由这种语言中的指令都是由0,10,1组成的序列,称这样组成的序列,称这样组成的序列,称这样组成的序列,称这样的序列为一条机器指令。的序列为一条机器指令。的序列为一条机器指令。的序列为一条机器指令。2、过程语言(、过程语言(C语言)语言)面向过程语言把代码组成叫做过程或函数的块。面向过程语言把代码组成叫做过程或函数的块。面向过程语言把代码组成叫做过程或函数的块。面向过程语言把代码组成叫做过程或函数的块。每个块的目标是完成某个任务,例如,一个每个块的目标是完成某个任务,例如,一个每个块的目标是完成某个任务,例如,一个每个块的目标是完成某个任务,例如,一个C C的源的源的源的源程序就是由若干个书写形式互相独立的函数组成。程序就是由若干个书写形式互相独立的函数组成。程序就是由若干个书写形式互相独立的函数组成。程序就是由若干个书写形式互相独立的函数组成。3、面向对象语言(、面向对象语言(JAVA,C+)面向对象编程更符合人的思维模式,主要体现面向对象编程更符合人的思维模式,主要体现面向对象编程更符合人的思维模式,主要体现面向对象编程更符合人的思维模式,主要体现在以下三个特性上。在以下三个特性上。在以下三个特性上。在以下三个特性上。6 64.1编程语言的几个发展阶段 1)封装性)封装性 封装是面向对象编程的核心思想之一,就是将数封装是面向对象编程的核心思想之一,就是将数封装是面向对象编程的核心思想之一,就是将数封装是面向对象编程的核心思想之一,就是将数据和对数据的操作封装在一起,也就是一个对象将自据和对数据的操作封装在一起,也就是一个对象将自据和对数据的操作封装在一起,也就是一个对象将自据和对数据的操作封装在一起,也就是一个对象将自己的数据和对这些数据的操作合理有效地封装在一起。己的数据和对这些数据的操作合理有效地封装在一起。己的数据和对这些数据的操作合理有效地封装在一起。己的数据和对这些数据的操作合理有效地封装在一起。封装将类的外部界面与类的功能实现区分开来,封装将类的外部界面与类的功能实现区分开来,封装将类的外部界面与类的功能实现区分开来,封装将类的外部界面与类的功能实现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接隐藏实现细节,(通过公共方法)保留有限的对外接隐藏实现细节,(通过公共方法)保留有限的对外接隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,通过访问接口实现对数口,迫使用户使用外部界面,通过访问接口实现对数口,迫使用户使用外部界面,通过访问接口实现对数口,迫使用户使用外部界面,通过访问接口实现对数据的操作。即使实现细节发生了改变,也还可通过界据的操作。即使实现细节发生了改变,也还可通过界据的操作。即使实现细节发生了改变,也还可通过界据的操作。即使实现细节发生了改变,也还可通过界面承担其功能而保留原样,确保调用它的代码还继续面承担其功能而保留原样,确保调用它的代码还继续面承担其功能而保留原样,确保调用它的代码还继续面承担其功能而保留原样,确保调用它的代码还继续工作。这使代码维护更简单。工作。这使代码维护更简单。工作。这使代码维护更简单。工作。这使代码维护更简单。7 74.1编程语言的几个发展阶段 2)继承)继承 3)多态)多态 多态是面向对象编程的有一个重要特征。多态多态是面向对象编程的有一个重要特征。多态多态是面向对象编程的有一个重要特征。多态多态是面向对象编程的有一个重要特征。多态有两种含义:有两种含义:有两种含义:有两种含义:一种是:操作名称的多态,即有多个操作具有一种是:操作名称的多态,即有多个操作具有一种是:操作名称的多态,即有多个操作具有一种是:操作名称的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须不相同的名字,但这些操作所接收的消息类型必须不相同的名字,但这些操作所接收的消息类型必须不相同的名字,但这些操作所接收的消息类型必须不同(在同(在同(在同(在JAVAJAVA中体现在方法重载上)。中体现在方法重载上)。中体现在方法重载上)。中体现在方法重载上)。另一种:是和继承有关的多态,是指同一个操另一种:是和继承有关的多态,是指同一个操另一种:是和继承有关的多态,是指同一个操另一种:是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为。作被不同类型对象调用时可能产生不同的行为。作被不同类型对象调用时可能产生不同的行为。作被不同类型对象调用时可能产生不同的行为。例如:狗和猫都喊叫,狗发出的是例如:狗和猫都喊叫,狗发出的是例如:狗和猫都喊叫,狗发出的是例如:狗和猫都喊叫,狗发出的是“汪汪汪汪汪汪汪汪”而猫是而猫是而猫是而猫是“喵喵喵喵喵喵喵喵”(在在在在JAVAJAVA中体现在覆盖上中体现在覆盖上中体现在覆盖上中体现在覆盖上)。)。)。)。8 84.2类 类是类是类是类是JavaJava的核心,也是类是组成的核心,也是类是组成的核心,也是类是组成的核心,也是类是组成JavaJava程序的基本程序的基本程序的基本程序的基本要素。类封装了一类对象的状态和方法。类是用来定要素。类封装了一类对象的状态和方法。类是用来定要素。类封装了一类对象的状态和方法。类是用来定要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。类是对具有相同属性和方法的一组相义对象的模板。类是对具有相同属性和方法的一组相义对象的模板。类是对具有相同属性和方法的一组相义对象的模板。类是对具有相同属性和方法的一组相似对象的抽象,或者说类是对象的模板。似对象的抽象,或者说类是对象的模板。似对象的抽象,或者说类是对象的模板。似对象的抽象,或者说类是对象的模板。类的实现包括两部分类的实现包括两部分类的实现包括两部分类的实现包括两部分:类声明和类体。类声明和类体。类声明和类体。类声明和类体。9 94.2类 1、类声明、类声明 类的声明格式如下:类的声明格式如下:类的声明格式如下:类的声明格式如下:修饰符修饰符修饰符修饰符 class class extends extends 父类名父类名父类名父类名 implements implements 接口名接口名接口名接口名 类主体类主体类主体类主体 class People class People 10104.2类 2、类体、类体 1 1)写类的目的是为了描述一类事物共有的属)写类的目的是为了描述一类事物共有的属)写类的目的是为了描述一类事物共有的属)写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的性和功能,描述过程由类体来实现。类声明之后的性和功能,描述过程由类体来实现。类声明之后的性和功能,描述过程由类体来实现。类声明之后的一对大括号一对大括号一对大括号一对大括号“”,“”以及它们之间的内容称做以及它们之间的内容称做以及它们之间的内容称做以及它们之间的内容称做类体,大括号之间的内容称做类体的内容。类体,大括号之间的内容称做类体的内容。类体,大括号之间的内容称做类体的内容。类体,大括号之间的内容称做类体的内容。2 2)类体的内容由两部分构:一部分是)类体的内容由两部分构:一部分是)类体的内容由两部分构:一部分是)类体的内容由两部分构:一部分是变量的变量的变量的变量的定义定义定义定义,用来刻画属性;另一部分是方法的定义,用用来刻画属性;另一部分是方法的定义,用用来刻画属性;另一部分是方法的定义,用用来刻画属性;另一部分是方法的定义,用来刻画功能。来刻画功能。来刻画功能。来刻画功能。11114.2类 3 3)声明成员变量的格式为:)声明成员变量的格式为:)声明成员变量的格式为:)声明成员变量的格式为:修饰符修饰符修饰符修饰符 声明成员方法的格式为:声明成员方法的格式为:声明成员方法的格式为:声明成员方法的格式为:(参数参数参数参数列表列表列表列表)throws )throws 方法体方法体方法体方法体 12124.2类class class 梯形梯形梯形梯形 float float 上底上底上底上底,下底下底下底下底,高高高高,laderArea;/,laderArea;/变量定义部分变量定义部分变量定义部分变量定义部分 float float 计算面积计算面积计算面积计算面积()/()/方法定义方法定义方法定义方法定义 laderArea=(laderArea=(上底上底上底上底+下底下底下底下底)*)*高高高高/2.0f;/2.0f;return laderArea;return laderArea;void void 修改高修改高修改高修改高(float h)/(float h)/方法定义方法定义方法定义方法定义 高高高高=h;=h;13134.24.2类类 3、成员变量和局部变量、成员变量和局部变量 1 1)我们已经知道类体分为两部分。变量定义)我们已经知道类体分为两部分。变量定义)我们已经知道类体分为两部分。变量定义)我们已经知道类体分为两部分。变量定义部分所定义的变量被称为类的成员变量。在方法部分所定义的变量被称为类的成员变量。在方法部分所定义的变量被称为类的成员变量。在方法部分所定义的变量被称为类的成员变量。在方法体中定义的变量和方法的参数被称为局部变量。体中定义的变量和方法的参数被称为局部变量。体中定义的变量和方法的参数被称为局部变量。体中定义的变量和方法的参数被称为局部变量。2 2)成员变量在整个类内都有效,局部变量只)成员变量在整个类内都有效,局部变量只)成员变量在整个类内都有效,局部变量只)成员变量在整个类内都有效,局部变量只在定义它的方法内有效。在定义它的方法内有效。在定义它的方法内有效。在定义它的方法内有效。3 3)成员变量又分为实例成员变量(简称实例)成员变量又分为实例成员变量(简称实例)成员变量又分为实例成员变量(简称实例)成员变量又分为实例成员变量(简称实例变量)和类变量(也称静态变量)变量)和类变量(也称静态变量)变量)和类变量(也称静态变量)变量)和类变量(也称静态变量)。如果成员变。如果成员变。如果成员变。如果成员变量的类型前面加上关键字量的类型前面加上关键字量的类型前面加上关键字量的类型前面加上关键字staticstatic,这样的成员变,这样的成员变,这样的成员变,这样的成员变量称做是类变量或静态变量。量称做是类变量或静态变量。量称做是类变量或静态变量。量称做是类变量或静态变量。14144.24.2类类 4 4)如果局部变量的名字与成员变量的名字)如果局部变量的名字与成员变量的名字)如果局部变量的名字与成员变量的名字)如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这相同,则成员变量被隐藏,即这个成员变量在这相同,则成员变量被隐藏,即这个成员变量在这相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效个方法内暂时失效个方法内暂时失效个方法内暂时失效 。5 5)如果局部变量的名字与成员变量的名字相)如果局部变量的名字与成员变量的名字相)如果局部变量的名字与成员变量的名字相)如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏。这时如果想在该方法内同,则成员变量被隐藏。这时如果想在该方法内同,则成员变量被隐藏。这时如果想在该方法内同,则成员变量被隐藏。这时如果想在该方法内使用成员变量,必须使用关键字使用成员变量,必须使用关键字使用成员变量,必须使用关键字使用成员变量,必须使用关键字thisthis。15154.24.2类类 4、方法、方法 方法的定义包括两部分:方法声明和方法体。方法的定义包括两部分:方法声明和方法体。方法的定义包括两部分:方法声明和方法体。方法的定义包括两部分:方法声明和方法体。一般格式为:一般格式为:一般格式为:一般格式为:方法声明部分方法声明部分方法声明部分方法声明部分 方法体内容方法体内容方法体内容方法体内容 1 1)方法声明)方法声明)方法声明)方法声明 最基本的方法声明包括方法名和方法类型。当最基本的方法声明包括方法名和方法类型。当最基本的方法声明包括方法名和方法类型。当最基本的方法声明包括方法名和方法类型。当方法不需要返回数据时,方法的类型必须是方法不需要返回数据时,方法的类型必须是方法不需要返回数据时,方法的类型必须是方法不需要返回数据时,方法的类型必须是voidvoid。16164.24.2类类 2 2)方法体)方法体)方法体)方法体 方法声明之后的一对大括号以及之间的内容成方法声明之后的一对大括号以及之间的内容成方法声明之后的一对大括号以及之间的内容成方法声明之后的一对大括号以及之间的内容成为方法的方法体。方法体的内容包括局部变量的定为方法的方法体。方法体的内容包括局部变量的定为方法的方法体。方法体的内容包括局部变量的定为方法的方法体。方法体的内容包括局部变量的定义和合法的义和合法的义和合法的义和合法的JavaJava语言。语言。语言。语言。3 3)方法参数在整个方法内有效,方法内定义)方法参数在整个方法内有效,方法内定义)方法参数在整个方法内有效,方法内定义)方法参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效。如果局的局部变量从它定义的位置之后开始有效。如果局的局部变量从它定义的位置之后开始有效。如果局的局部变量从它定义的位置之后开始有效。如果局部变量的定义是在一个复合语句中,那么该局部变部变量的定义是在一个复合语句中,那么该局部变部变量的定义是在一个复合语句中,那么该局部变部变量的定义是在一个复合语句中,那么该局部变量的有效范围是该复合语句,即仅在该复合语句中量的有效范围是该复合语句,即仅在该复合语句中量的有效范围是该复合语句,即仅在该复合语句中量的有效范围是该复合语句,即仅在该复合语句中有效,如果局部变量的定义是在一个循环语句中,有效,如果局部变量的定义是在一个循环语句中,有效,如果局部变量的定义是在一个循环语句中,有效,如果局部变量的定义是在一个循环语句中,那么该局部变量的有效范围是该循环语句,即仅在那么该局部变量的有效范围是该循环语句,即仅在那么该局部变量的有效范围是该循环语句,即仅在那么该局部变量的有效范围是该循环语句,即仅在该循环语句中有效该循环语句中有效该循环语句中有效该循环语句中有效 。17174.24.2类类 5、方法重载、方法重载 方法重载的意思是:一个类中可以有多个方法具方法重载的意思是:一个类中可以有多个方法具方法重载的意思是:一个类中可以有多个方法具方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者有相同的名字,但这些方法的参数必须不同,即或者有相同的名字,但这些方法的参数必须不同,即或者有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。重载是是参数的个数不同,或者是参数的类型不同。重载是是参数的个数不同,或者是参数的类型不同。重载是是参数的个数不同,或者是参数的类型不同。重载是Java Java 实现多态性的一种方式。实现多态性的一种方式。实现多态性的一种方式。实现多态性的一种方式。有两个规则适用于重载方法:有两个规则适用于重载方法:有两个规则适用于重载方法:有两个规则适用于重载方法:调用语句的参数表必须有足够的不同,以至调用语句的参数表必须有足够的不同,以至调用语句的参数表必须有足够的不同,以至调用语句的参数表必须有足够的不同,以至于允许区分出正确的方法被调用。于允许区分出正确的方法被调用。于允许区分出正确的方法被调用。于允许区分出正确的方法被调用。方法的返回类型可以各不相同,但它不足以方法的返回类型可以各不相同,但它不足以方法的返回类型可以各不相同,但它不足以方法的返回类型可以各不相同,但它不足以使返回类型变成唯一的差异。使返回类型变成唯一的差异。使返回类型变成唯一的差异。使返回类型变成唯一的差异。重载方法的参数表必须重载方法的参数表必须重载方法的参数表必须重载方法的参数表必须不同。不同。不同。不同。1818class Areaclass Area float getArea(float r)float getArea(float r)return 3.14f*r*r;return 3.14f*r*r;double getArea(float x,int y)double getArea(float x,int y)return x*y;return x*y;float getArea(int x,float y)float getArea(int x,float y)return x*y;return x*y;double getArea(float x,float y,float z)double getArea(float x,float y,float z)return(x*x+y*y+z*z)*2.0;return(x*x+y*y+z*z)*2.0;19194.24.2类类 6、构造方法、构造方法 1)构造方法是一种特殊方法,用来对对象进)构造方法是一种特殊方法,用来对对象进行初始化。行初始化。2)它的名字必须与它所在的类的名字完全相)它的名字必须与它所在的类的名字完全相同,而且没有类型,甚至连表示无返回值的空类型同,而且没有类型,甚至连表示无返回值的空类型(void)也没有)也没有。构造方法一般应定义为。构造方法一般应定义为public构造方法也可以重载构造方法也可以重载 3)一般而言,每个类都至少有一个构造函数。)一般而言,每个类都至少有一个构造函数。如果程序员没有为类定义构造函数,如果程序员没有为类定义构造函数,Java虚拟机虚拟机会自动为该类生成一个默认的构造函数。会自动为该类生成一个默认的构造函数。4)要特别注意的是,如果程序员定义了一个)要特别注意的是,如果程序员定义了一个或多个构造函数,则自动屏蔽掉默认的构造函数。或多个构造函数,则自动屏蔽掉默认的构造函数。(详见例程)(详见例程)2020 5)构造方法重载示例构造方法重载示例 public class Employee public class Employee private String name;private String name;private int salary;private int salary;public Employee(String n,int s)public Employee(String n,int s)name=n;name=n;salary=s;salary=s;public Employee(String n)public Employee(String n)this(n,0);this(n,0);public Employee()public Employee()this(Unknown );this(Unknown );21214.24.2类类 7 7、类方法和实例方法说明:、类方法和实例方法说明:1 1)类中的方法分为实例方法和类方法。)类中的方法分为实例方法和类方法。2 2)方法声明时,方法类型前面不加关键字)方法声明时,方法类型前面不加关键字staticstatic的是实例方法、加关键字的是实例方法、加关键字staticstatic的是类方法。的是类方法。3 3)构造方法是特殊的方法,不能用)构造方法是特殊的方法,不能用staticstatic修修饰构造方法。饰构造方法。4 4)实例方法既能对类变量操作也能对实例变)实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。量操作,而类方法只能对类变量进行操作。5 5)一个类中的方法可以互相调用,实例方法)一个类中的方法可以互相调用,实例方法可以调用该类中的其他方法;类方法只能调用类方可以调用该类中的其他方法;类方法只能调用类方法,不能调用实例方法。法,不能调用实例方法。22224.34.3对象对象 类是创建对象的模板。当使用一个类创建了一个类是创建对象的模板。当使用一个类创建了一个类是创建对象的模板。当使用一个类创建了一个类是创建对象的模板。当使用一个类创建了一个对象时,我们也说我们给出了这个类的一个实例。对象时,我们也说我们给出了这个类的一个实例。对象时,我们也说我们给出了这个类的一个实例。对象时,我们也说我们给出了这个类的一个实例。1、创建对象、创建对象 创建一个对象包括对象的声明和为对象分配内存创建一个对象包括对象的声明和为对象分配内存创建一个对象包括对象的声明和为对象分配内存创建一个对象包括对象的声明和为对象分配内存两个步骤。两个步骤。两个步骤。两个步骤。(1)(1)对象的声明。对象的声明。对象的声明。对象的声明。一般格式为:一般格式为:一般格式为:一般格式为:类的名字类的名字类的名字类的名字 对象名字对象名字对象名字对象名字;如:如:如:如:People zhangPing;People zhangPing;23234.34.3对象对象 (2)为声明的对象分配内存为声明的对象分配内存 使用使用new运算符和类的构造方法为声明的运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法是无会调用默认的构造方法(默认的构造方法是无参数的)。如:参数的)。如:zhangPing=new People();(3)对象的内存模型对象的内存模型 见下例见下例:2424 class XiyoujiRenwu class XiyoujiRenwu float height,weight;float height,weight;String head,ear,hand,foot,mouth;String head,ear,hand,foot,mouth;void speak(String s)void speak(String s)System.out.println(s);System.out.println(s);class A class A public static void main(String args)public static void main(String args)XiyoujiRenwu zhubajie;/XiyoujiRenwu zhubajie;/声明对象声明对象声明对象声明对象 zhubajie=new XiyoujiRenwu();/zhubajie=new XiyoujiRenwu();/为对象分为对象分为对象分为对象分/配内存配内存配内存配内存 ,使用,使用,使用,使用new new 运运运运 算算算算 符和默认的构造方法符和默认的构造方法符和默认的构造方法符和默认的构造方法 25254.34.3对象对象 当用当用XiyoujiRenwu类声明一个变量,类声明一个变量,即对象即对象zhubajie时,对象时的内存模型如时,对象时的内存模型如下:下:XiyoujiRenwu zhubajie;XiyoujiRenwu zhubajie;26264.3对象 当系统见到:当系统见到:zhubajie=new XiyoujiRenwu();时,就会做两件事:时,就会做两件事:为为height,weight,head,ear,mouth,hand,foot各个变量分配内存,各个变量分配内存,即即XiyoujiRenwu类的成员变量被分配内存类的成员变量被分配内存空间,然后执行构造方法中的语句。空间,然后执行构造方法中的语句。new运算符在为变量运算符在为变量height,weight,head,ear,mouth,hand,foot分配内存后,将返回一个引用给对象变分配内存后,将返回一个引用给对象变量量zhubajie(分配实体后的内存模型如下:)。(分配实体后的内存模型如下:)。(分配实体后的内存模型如下:)。(分配实体后的内存模型如下:)。27274.3对象28284.34.3对象对象 2、对象的使用、对象的使用 1 1)对象不仅可以操作自己的变量改变状态,而)对象不仅可以操作自己的变量改变状态,而)对象不仅可以操作自己的变量改变状态,而)对象不仅可以操作自己的变量改变状态,而且还拥有了使用创建它的那个类中的方法的能力,对且还拥有了使用创建它的那个类中的方法的能力,对且还拥有了使用创建它的那个类中的方法的能力,对且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。象通过使用这些方法可以产生一定的行为。象通过使用这些方法可以产生一定的行为。象通过使用这些方法可以产生一定的行为。2 2)通过使用运算符)通过使用运算符)通过使用运算符)通过使用运算符“.”,对象可以实现对自己,对象可以实现对自己,对象可以实现对自己,对象可以实现对自己的变量访问和方法的调用。的变量访问和方法的调用。的变量访问和方法的调用。的变量访问和方法的调用。3 3)当对象调用方法时,方法中出现的成员变量)当对象调用方法时,方法中出现的成员变量)当对象调用方法时,方法中出现的成员变量)当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量(见例就是指该对象的成员变量(见例就是指该对象的成员变量(见例就是指该对象的成员变量(见例4.34.3)。)。)。)。对象名成员变量名对象名成员变量名对象名成员变量名对象名成员变量名 对象名成员方法名(对象名成员方法名(对象名成员方法名(对象名成员方法名()29294.34.3对象对象 3、对象的引用和实体、对象的引用和实体 1 1)当用类创建一个对象时,类中的成员变量)当用类创建一个对象时,类中的成员变量)当用类创建一个对象时,类中的成员变量)当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称做该对象的实体,被分配内存空间,这些内存空间称做该对象的实体,被分配内存空间,这些内存空间称做该对象的实体,被分配内存空间,这些内存空间称做该对象的实体,而对象中存放着引用,以确保实体由该对象操作使而对象中存放着引用,以确保实体由该对象操作使而对象中存放着引用,以确保实体由该对象操作使而对象中存放着引用,以确保实体由该对象操作使用。用。用。用。2 2)一个类创建的两个对象,如果具有相同的)一个类创建的两个对象,如果具有相同的)一个类创建的两个对象,如果具有相同的)一个类创建的两个对象,如果具有相同的引用,那么就具有完全相同的实体。引用,那么就具有完全相同的实体。引用,那么就具有完全相同的实体。引用,那么就具有完全相同的实体。3 3)没有实体的对象称作空对象,空对象不能)没有实体的对象称作空对象,空对象不能)没有实体的对象称作空对象,空对象不能)没有实体的对象称作空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。使用,即不能让一个空对象去调用方法产生行为。使用,即不能让一个空对象去调用方法产生行为。使用,即不能让一个空对象去调用方法产生行为。30304.34.3对象对象31314.34.3对象对象32324.34.3对象对象 4、参数传值、参数传值 在在在在JavaJavaJavaJava语言中,向方法传递参数的方式是语言中,向方法传递参数的方式是语言中,向方法传递参数的方式是语言中,向方法传递参数的方式是“按按按按值传递值传递值传递值传递”。按值传递意味着当将一个参数传递给一。按值传递意味着当将一个参数传递给一。按值传递意味着当将一个参数传递给一。按值传递意味着当将一个参数传递给一个方法时,首先创建了源参数的一个副本并将这个个方法时,首先创建了源参数的一个副本并将这个个方法时,首先创建了源参数的一个副本并将这个个方法时,首先创建了源参数的一个副本并将这个副本传入了方法,这样方法接收的是原始值的一个副本传入了方法,这样方法接收的是原始值的一个副本传入了方法,这样方法接收的是原始值的一个副本传入了方法,这样方法接收的是原始值的一个副本。因此,即使在方法中修改了该参数,那仅仅副本。因此,即使在方法中修改了该参数,那仅仅副本。因此,即使在方法中修改了该参数,那仅仅副本。因此,即使在方法中修改了该参数,那仅仅是改变副本,而源参数值保持不变。是改变副本,而源参数值保持不变。是改变副本,而源参数值保持不变。是改变副本,而源参数值保持不变。1 1 1 1)基本数据类型参数的传值)基本数据类型参数的传值)基本数据类型参数的传值)基本数据类型参数的传值 对于基本数据类型的参数,向该参数传递的值对于基本数据类型的参数,向该参数传递的值对于基本数据类型的参数,向该参数传递的值对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别,比如,不可以向的级别不可以高于该参数的级别,比如,不可以向的级别不可以高于该参数的级别,比如,不可以向的级别不可以高于该参数的级别,比如,不可以向intintintint型参数传递一个型参数传递一个型参数传递一个型参数传递一个floatfloatfloatfloat值,但可以向值,但可以向值,但可以向值,但可以向doubledoubledoubledouble型参型参型参型参数传递一个数传递一个数传递一个数传递一个floatfloatfloatfloat值。值。值。值。33334.34.3对象对象 2)引用类型参数的传值)引用类型参数的传值 JavaJava的引用型数据包括对象、数组和接口。当的引用型数据包括对象、数组和接口。当的引用型数据包括对象、数组和接口。当的引用型数据包括对象、数组和接口。当参数是引用类型时,参数是引用类型时,参数是引用类型时,参数是引用类型时,“传值传值传值传值”传递的是变量的引用而传递的是变量的引用而传递的是变量的引用而传递的是变量的引用而不是变量所引用的实体。不是变量所引用的实体。不是变量所引用的实体。不是变量所引用的实体。当使用对象实例作为参数传递给方法时,参数的当使用对象实例作为参数传递给方法时,参数的当使用对象实例作为参数传递给方法时,参数的当使用对象实例作为参数传递给方法时,参数的值是对对象的引用。也就是说,传递给到方法内部的值是对对象的引用。也就是说,传递给到方法内部的值是对对象的引用。也就是说,传递给到方法内部的值是对对象的引用。也就是说,传递给到方法内部的是对象的引用值而不是对象的内容。是对象的引用值而不是对象的内容。是对象的引用值而不是对象的内容。是对象的引用值而不是对象的内容。在方法内这个引用值不会被改变。但如果通过该在方法内这个引用值不会被改变。但如果通过该在方法内这个引用值不会被改变。但如果通过该在方法内这个引用值不会被改变。但如果通过该引用值修改了所指向的对象的内容,则方法结束后,引用值修改了所指向的对象的内容,则方法结束后,引用值修改了所指向的对象的内容,则方法结束后,引用值修改了所指向的对象的内容,则方法结束后,所修改的对象内容可以保留下来。(详见例程和课本所修改的对象内容可以保留下来。(详见例程和课本所修改的对象内容可以保留下来。(详见例程和课本所修改的对象内容可以保留下来。(详见例程和课本例例例例4.54.5)34344.4 static4.4 static关键字关键字 在一个类中,使用在一个类中,使用在一个类中,使用在一个类中,使用staticstatic修饰的变量和方法分修饰的变量和方法分修饰的变量和方法分修饰的变量和方法分别称为别称为别称为别称为类变量类变量类变量类变量(或称静态变量)和(或称静态变量)和(或称静态变量)和(或称静态变量)和类方法类方法类方法类方法(或称静(或称静(或称静(或称静态方法),没有使用态方法),没有使用态方法),没有使用态方法),没有使用staticstatic修饰的变量和方法分别修饰的变量和方法分别修饰的变量和方法分别修饰的变量和方法分别称为实例变量和实例方法。称为实例变量和实例方法。称为实例变量和实例方法。称为实例变量和实例方法。1、实例变量和类变量的区别、实例变量和类变量的区别 一个类通过使用一个类通过使用一个类通过使用一个类通过使用newnew运算符可以创建多个不同运算符可以创建多个不同运算符可以创建多个不同运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内的对象,不同的对象的实例变量将被分配不同的内的对象,不同的对象的实例变量将被分配不同的内的对象,不同的对象的实例变量将被分配不同的内存空间,如果类中的成员变量有类变量,那么所有存空间,如果类中的成员变量有类变量,那么所有存空间,如果类中的成员变量有类变量,那么所有存空间,如果类中的成员变量有类变量,那么所有的对象的这个类变量都分配给相同的一处内存,改的对象的这个类变量都分配给相同的一处内存,改的对象的这个类变量都分配给相同的一处内存,改的对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这变其中一个对象的这个类变量会影响其它对象的这变其中一个对象的这个类变量会影响其它对象的这变其中一个对象的这个类变量会影响其它对象的这个类变量。个类变量。个类变量。个类变量。35354.4 static4.4 static关键字关键字 类变量是和该类创建的所有对象相关联的变量,类变量是和该类创建的所有对象相关联的变量,类变量是和该类创建的所有对象相关联的变量,类变量是和该类创建的所有对象相关联的变量,改变其中一个对象的这个类变量就同时改变了其它改变其中一个对象的这个类变量就同时改变了其它改变其中一个对象的这个类变量就同时改变了其它改变其中一个对象的这个类变量就同时改变了其它对象的这个类变量。因此,类变量不仅可以通过某对象的这个类变量。因此,类变量不仅可以通过某对象的这个类变量。因此,类变量不仅可以通过某对象的这个类变量。因此,类变量不仅可以通过某个对象访问也可以直接通过类名访问。实例变量仅个对象访问也可以直接通过类名访问。实例变量仅个对象访问也可以直接通过类名访问。实例变量仅个对象访问也可以直接通过类名访问。实例变量仅仅是和相应的对象关联的变量,也就是说,不同对仅是和相应的对象关联的变量,也就是说,不同对仅是和相应的对象关联的变量,也就是说,不同对仅是和相应的对象关联的变量,也就是说,不同对象的实例变量互不相同,即分配不同的内存空间,象的实例变量互不相同,即分配不同的内存空间,象的实例变量互不相同,即分配不同的内存空间,象的实例变量互不相同,即分配不同的内存空间,改变其中一个对象的实例变量不会影响其它对象的改变其中一个对象的实例变量不会影响其它对象的改变其中一个对象的实例变量不会影响其它对象的改变其中一个对象的实例变量不会影响其它对象的这个实例变量。实例变量可以通过对象访问,不能这个实例变量。实例变量可以通过对象访问,不能这个实例变量。实例变量可以通过对象访问,不能这个实例变量。实例变量可以通过对象访问,不能使用类名访问。使用类名访问。使用类名访问。使用类名访问。36364.4 static4.4 static关键字关键字 、实例方法和类方法的区别、实例方法和类方法的区别 实例方法可以被类创建的任何对象调用执实例方法可以被类创建的任何对象调用执行。而类方法不仅可以被类创建的任何对象调行。而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。用执行,也可以直接通过类名调用。总结:总结:1 1、类成员属于这个类而不是属于这个类的、类成员属于这个类而不是属于这个类的某个对象。某个对象。37374.4 static4.4 static关键字关键字 2、对于类成员,既可以使用对象进行访问,、对于类成员,既可以使用对象进行访问,也可以使用类名直接进行访问,并且在也可以使用类名直接进行访问,并且在类方法类方法中只中只能访问能访问类成员类成员,而不能访问实例成员。,而不能访问实例成员。3、实例成员由每一个对象个体独有,对象的、实例成员由每一个对象个体独有,对象的存储空间中的确有一块空间用来存储该成员。对于存储空间中的确有一块空间用来存储该成员。对于实例成员,只能通过对象来访问,不能通过类名进实例成员,只能通过对象来访问,不能通过类名进行访问。行访问。4、在实例方法中,既可以访问实例成员,也、在实例方法中,既可以访问实例成员,也可以访问类成员。可以访问类成员。38384.5 this4.5 this关键字关键字 有关有关this的几点描述:的几点描述:1)this是是Java的一个关键字,表示某个对象。的一个关键字,表示某个对象。2)this可以出现在实例方法和构造方法中,但可以出现在实例方法和构造方法中,但不可以出现在类方法中。不可以出现在类方法中。3)this关键字出现在类的构造方法中时,代表关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。使用该构造方法所创建的对象。4)this关键字出现在类的实例方法中时,代表关键字出现在类的实例方法中时,代表正在调用该方法的当前对象。正在调用该方法的当前对象。39394.5 this4.5 this关键字关键字 5 5)需要注意的是,当一个变量被声明为)需要注意的是,当一个变量被声明为)需要注意的是,当一个变量被声明为)需要注意的是,当一个变量被声明为staticstatic时,是不能用时,是不能用时,是不能用时,是不能用thisthis来指向的,因为来指向的,因为来指向的,因为来指向的,因为thisthis指向指向指向指向某一具体对象,不能用来指示类本身。某一具体对象,不能用来指示类本身。某一具体对象,不能用来指示类本身。某一具体对象,不能用来指示类本身。6 6)thisthis还可以用在某个构造函数的第一句,还可以用在某个构造函数的第一句,还可以用在某个构造函数的第一句,还可以用在某个构造函数的第一句,用来调用该类的另一个构造函数用来调用该类的另一个构造函数用来调用该类的另一个构造函数用来调用该类的另一个构造函数 。40404.6 4.6 包包 1 1 1 1、包语句包语句包语句包语句 1 1 1 1)包的概念)包的概念)包的概念)包的概念 包:是包:是包:是包:是JavaJavaJavaJava提供的文件组织方式。提供的文件组织方式。提供的文件组织方式。提供的文件组织方式。为了便于管理大型软件系统中数目众多的类,为了便于管理大型软件系统中数目众多的类,为了便于管理大型软件系统中数目众多的类,为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,解决类命名冲突的问题,解决类命名冲突的问题,解决类命名冲突的问题,JavaJavaJavaJava引入了包引入了包引入了包引入了包(packagepackagepackagepackage)。一个包中可以包括很多类文件,包)。一个包中可以包括很多类文件,包)。一个包中可以包括很多类文件,包)。一个包中可以包括很多类文件,包中还可以有子包,形成包等级。使用包不仅方便中还可以有子包,形成包等级。使用包不仅方便中还可以有子包,形成包等级。使用包不仅方便中还可以有子包,形成包等级。使用包不仅方便了类文件的管理,而且扩大了了类文件的管理,而且扩大了了类文件的管理,而且扩大了了类文件的管理,而且扩大了JavaJavaJavaJava命名空间。命名空间。命名空间。命名空间。41414.6 4.6 包包 2 2)包的创建)包的创建 创建包的语法格式为:创建包的语法格式为:Package Package ;例如:例如:package myPackage;package myPackage;也可以创建包的层次。也可以创建包的层次。例如:例如:package myPackage.secondPackage;package myPackage.secondPackage;42424.6 4.6 包包 3)package语句的进一步说明语句的进一步说明 (1)package(1)package语句必须是文件中的第一条语语句必须是文件中的第一条语语句必须是文件中的第一条语语句必须是文件中的第一条语句。也就是说,在句。也就是说,在句。也就是说,在句。也就是说,在packagepackage语句之前,除了空白语句之前,除了空白语句之前,除了空白语句之前,除了空白和注释之外不能有任何语句。和注释之外不能有任何语句。和注释之外不能有任何语句。和注释之外不能有任何语句。(2)(2)如果不加如果不加如果不加如果不加packagepackage语句,则指定为缺省语句,则指定为缺省语句,则指定为缺省语句,则指定为缺省包或无名包。包或无名包。包或无名包。包或无名包。(3)(3)包对应着文件系统的目录层次结构。包对应着文件系统的目录层次结构。包对应着文件系统的目录层次结构。包对应着文件系统的目录层次结构。(4)(4)在在在在packagepackage语句中,用语句中,用语句中,用语句中,用“.”来指明包来指明包来指明包来指明包(目录)的层次。(目录)的层次。(目录)的层次。(目录)的层次。43434.6 4.6 包包例:例:package myPackage;public class HelloWorldpublic static void main(String args)System.out.print(Hello World!);44444.6 4.6 包包 2、import语句语句 在编写源文件时,除了自己编写类外,我们经常在编写源文件时,除了自己编写类外,我们经常在编写源文件时,除了自己编写类外,我们经常在编写源文件时,除了自己编写类外,我们经常需要使用需要使用需要使用需要使用JavaJava提供的许多类,这些类可能在不同的包提供的许多类,这些类可能在不同的包提供的许多类,这些类可能在不同的包提供的许多类,这些类可能在不同的包中,而使用中,而使用中,而使用中,而使用import import 语句可以引入包中的类。语句可以引入包中的类。语句可以引入包中的类。语句可以引入包中的类。import import 语句的使用方式如下:语句的使用方式如下:语句的使用方式如下:语句的使用方式如下:1 1)引入包中的类。)引入包中的类。)引入包中的类。)引入包中的类。import java.io.File;import java.io.File;2 2)引入整个包。)引入整个包。)引入整个包。)引入整个包。import java.io.*;import java.io.*;3 3)在同一包中的类可以互相引用,无需)在同一包中的类可以互相引用,无需)在同一包中的类可以互相引用,无需)在同一包中的类可以互相引用,无需importimport语句。语句。语句。语句。45454.74.7访问权限访问权限 1、访问控制修饰符简介、访问控制修饰符简介 访问控制修饰符说明类或类的成员的可访问范访问控制修饰符说明类或类的成员的可访问范访问控制修饰符说明类或类的成员的可访问范访问控制修饰符说明类或类的成员的可访问范围。围。围。围。1 1)publicpublic 用用用用publicpublic修饰的类或成员拥有公共作用域,表修饰的类或成员拥有公共作用域,表修饰的类或成员拥有公共作用域,表修饰的类或成员拥有公共作用域,表明此类或类的成员可以被任何明此类或类的成员可以被任何明此类或类的成员可以被任何明此类或类的成员可以被任何JavaJava中的类所访问,中的类所访问,中的类所访问,中的类所访问,是最广泛的作用范围。是最广泛的作用范围。是最广泛的作用范围。是最广泛的作用范围。2 2)protectedprotected 用用用用protectedprotected修饰的变量或方法拥有受保护作修饰的变量或方法拥有受保护作修饰的变量或方法拥有受保护作修饰的变量或方法拥有受保护作用域,可以被同一个包中所有的类及其他包中该类用域,可以被同一个包中所有的类及其他包中该类用域,可以被同一个包中所有的类及其他包中该类用域,可以被同一个包中所有的类及其他包中该类的子类所访问。的子类所访问。的子类所访问。的子类所访问。46464.74.7访问权限访问权限 3 3)privateprivate 用用用用privateprivate修饰的变量或方法拥有私有作用域,修饰的变量或方法拥有私有作用域,修饰的变量或方法拥有私有作用域,修饰的变量或方法拥有私有作用域,只能在此类中访问,在其他类中,包括该类的子只能在此类中访问,在其他类中,包括该类的子只能在此类中访问,在其他类中,包括该类的子只能在此类中访问,在其他类中,包括该类的子类中也是不允许访问的,类中也是不允许访问的,类中也是不允许访问的,类中也是不允许访问的,privateprivate是最保守的作用是最保守的作用是最保守的作用是最保守的作用范围。范围。范围。范围。4 4)friendlyfriendly(默认)(默认)(默认)(默认)没有使用任何修饰符的,拥有默认访问权限没有使用任何修饰符的,拥有默认访问权限没有使用任何修饰符的,拥有默认访问权限没有使用任何修饰符的,拥有默认访问权限(也称友好访问权限),表明此类或类的成员可(也称友好访问权限),表明此类或类的成员可(也称友好访问权限),表明此类或类的成员可(也称友好访问权限),表明此类或类的成员可以被同一个包中的其它类访问。以被同一个包中的其它类访问。以被同一个包中的其它类访问。以被同一个包中的其它类访问。47474.
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:第四讲类对象和接口
链接地址:https://www.zhuangpeitu.com/article/214439303.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!