Java2实用教程课件(第3版第4章).ppt
《Java2实用教程课件(第3版第4章).ppt》由会员分享,可在线阅读,更多相关《Java2实用教程课件(第3版第4章).ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第章类、对象和接口第章类、对象和接口l4.1 编程语言的几个发展编程语言的几个发展阶段阶段l4.2 类类l4.3 对象对象l4.4 static 关键字关键字l4.5 this 关键字关键字l4.6 包包l4.7 访问权限访问权限l4.8 类的继承类的继承l4.9 对象的上转型对象对象的上转型对象l4.10 多态性多态性l4.11 abstract 类和类和abstract方法方法l4.12 super关键字关键字l4.13 接口接口l4.14 内部类内部类l4.15 匿名类匿名类l4.16 异常类异常类l4.17 Class类类l4.18 基本类型的类包装基本类型的类包装l4.19 反编译和
2、文档生成器反编译和文档生成器l4.20 jar文件文件 4.1 编程语言的几个发展阶段编程语言的几个发展阶段l机器语言(如汇编语言)机器语言(如汇编语言)计算机处理信息的早期语言是所谓的机器语言,这种语言中的指令都是由0,1组成的序列,称这样的序列为一条机器指令。l过程语言过程语言 语言把代码组成叫做过程或函数的块。每个块的目标是完成某个任务,例如,一个C的源程序就是由若干个书写形式互相独立的函数组成。l面向对象编程面向对象编程 面向对象编程主要体现下列三个特性:1.封装性 2.继承 3.多态lJava语言是面向对象语言,它的源程序是由若干个类组语言是面向对象语言,它的源程序是由若干个类组成,
3、源文件是扩展名为成,源文件是扩展名为.java的文本文件的文本文件 4.2 类类l类是组成Java程序的基本要素。类封装了一类对象的状态状态和和方法方法。类是用来定义对象的模板。l类的实现包括两部分:类声明类声明和类体类体。1.类声明类声明class People “class People”叫做类声明;“People”是类名。习惯上类名的第一个字母大写,但这不是必须的。2.类体类体l写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“”,“”以及它们之间的内容称做类体,大括号之间的内容称做类体的内容。l类体的内容由两部分构:一部分是变量的变量的定义定义
4、,用来刻画属性;另一部分是方法的方法的定义定义,用来刻画功能。class 梯形 float 上底,下底,高,laderArea;/变量定义部分 float 计算面积()/方法定义 laderArea=(上底+下底)*高/2.0f;return laderArea;void 修改高(float h)/方法定义 高=h;3.成员变量和局部变量成员变量和局部变量l我们已经知道类体分为两部分。变量定义部分所定义的变量被称为类的成员变量。在方法体中定义的变量和方法的参数被称为局部变量。l成员变量在整个类内都有效,局部变量只在定义它的方法内有效。l成员变量又分为实例成员变量实例成员变量(简称实例变量)和类
5、变量类变量(也称静态变量).如果成员变量的类型前面加上关键字static,这样的成员变量称做是类变量或静态变量。l如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效.l如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏。这时如果想在该方法内使用成员变量,必须使用关键字this。class 三角形 float sideA,sideB,sideC,lengthSum;void setSide(float sideA,float sideB,float sideC)this.sideA=sideA;this.sideB=sideB;this.sideC
6、=sideC;lthis.sideA,this.sideB,this.sideC就分别表示成员变量sideA,sideB,sideC 4.方法方法l我们已经知道一个类的类体由两部分组成:变量的定义和方法的定义。方法的定义包括两部分:方法声明方法声明和和方法体方法体。l方法参数在整个方法内有效,方法内定义的局部方法参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效变量从它定义的位置之后开始有效。如果局部变如果局部变量的定义是在一个复合语句中,那么该局部变量量的定义是在一个复合语句中,那么该局部变量的有效范围是该复合语句的有效范围是该复合语句,即仅在该复合语句中有效,如果局部变量
7、的定义是在一个循环语句中,如果局部变量的定义是在一个循环语句中,那么该局部变量的有效范围是该循环语句那么该局部变量的有效范围是该循环语句,即仅在该循环语句中有效.l写一个方法和C语言中写一个函数类似,只不过在这里称做方法 5.方法重载方法重载l方法重载的意思是:一个类中可以有多个方法具有相同的名字相同的名字,但这些方法的参数参数必须不同必须不同,即或者是参数的个数不同,或即或者是参数的个数不同,或者是参数的类型不同者是参数的类型不同。class Area float getArea(float r)return 3.14f*r*r;double getArea(float x,int y)re
8、turn x*y;float getArea(int x,float y)return x*y;double getArea(float x,float y,float z)return(x*x+y*y+z*z)*2.0;6.构造方法构造方法l构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同与它所在的类的名字完全相同,而且没有没有类型类型,构造方法也可以重载可以重载。class 梯形 float 上底,下底,高;梯形()上底=60;下底=100;高=20;梯形(float x,int y,float h)上底=x;下底=y;高=h;7.类方法和实例方法类方法和实例方法l类中的方法
9、也可分为实例方法实例方法和类方法类方法.l方法声明时,方法类型前面不加关键字static的是实例方法、加关键字static的是类方法。l构造方法是特殊的方法,不能用static修饰构造方法。4.3 对象对象 l类是创建对象的模板。当使用一个类创建了一个对象时,我们也说我们给出了这个类的一个实例。1.创建对象创建对象l创建一个对象包括对象的声明和为对象分配内存两个步骤。(1)对象的声明。一般格式为:类的名字类的名字 对象名字对象名字;如:People zhangPing;l(2)为声明的对象分配内存使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法
10、(默认的构造方法是无参数的,你一定还记得构造方法的名字必须和类名相同这一规定)。如:zhangPing=new People();l(3)对象的内存模型 使用例子1来说明对象的内存模型 class XiyoujiRenwu float height,weight;String head,ear,hand,foot,mouth;void speak(String s)System.out.println(s);class A public static void main(String args)XiyoujiRenwu zhubajie;/声明对象 zhubajie=new XiyoujiRe
11、nwu();/为对象分配内存,/使用new 运 算 符和默认的构造方法 声明对象时的内存模型声明对象时的内存模型 l当用XiyoujiRenwu类声明一个变量,即对象zhubajie时,如例子1中的对象zhubajie:XiyoujiRenwu zhubajie;内存模型如左图所示内存模型如左图所示 对象分配内存后的内存模型对象分配内存后的内存模型 l当系统见到:zhubajie=new XiyoujiRenwu();时,就会做两件事:为height,weight,head,ear,mouth,hand,foot各个变量分配内存,即XiyoujiRenwu类的成员变量被分配内存空间,然后执行构
12、造方法中的语句。new运算符在为变量height,weight,head,ear,mouth,hand,foot分配内存后,将返回一个引用引用给对象变量zhubajie。2.使用对象使用对象 l对象不仅可以操作自己的变量改变状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。l通过使用运算符通过使用运算符“.”,对象可以实现对自,对象可以实现对自己的变量访问和方法的调用。己的变量访问和方法的调用。l当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量。3.对象的引用和实体对象的引用和实体l当用类创建一个对象时,类中的成员变量被分配内存空间,这些内
13、存空间称做该对象的实体,而对象中存放着引用,以确保实体由该对象操作使用。l一个类创建的两个对象,如果具有相同的一个类创建的两个对象,如果具有相同的引用,那么就具有完全相同的实体。引用,那么就具有完全相同的实体。l没有实体的对象称作空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。4.参数传值参数传值l当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。在在Java中,方法的所有参数都是中,方法的所有参数都是“传传值值”的,也就是说,方法中参数变量的值的,也就是说,方法中参数变量的值是调用者指定的值的拷贝。是调用者指定的值的拷贝。例如,如果向方法的int型参数
14、x传递一个int值,那么参数x得到的值是传递值的拷贝。方法如果改变参数的值,不会影响向参数“传值”的变量的值。基本数据类型参数的传值基本数据类型参数的传值 l对于基本数据类型的参数,向该参数传递向该参数传递的值的级别不可以高于该参数的级别的值的级别不可以高于该参数的级别,比如,不可以向int型参数传递一个float值,但可以向double型参数传递一个float值。引用类型参数的传值引用类型参数的传值 lJava的引用型数据包括对象、数组和接口对象、数组和接口。当参数是引用类型时,“传值”传递的是变量的引用变量的引用而不是变量所引用的实体。l如果改变参数变量所引用的实体,就会导致原变量的实体发
15、生同样的变化。但是,改变参数的引用不会影响向其传值的变量的引用。4.4 static 关键字关键字l用static修饰的成员变量称为类变量 l用static修饰的方法称为类方法 实例变量和类变量的区别实例变量和类变量的区别l一个类通过使用new运算符可以创建多个不同的对象,不不同的对象的实例变量将被分配不同的内存空间,同的对象的实例变量将被分配不同的内存空间,如果类中的成员变量有类变量,那么所有的对象的这个类变量都分所有的对象的这个类变量都分配给相同的一处内存配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。l类变量是和该类创建的所有对象相关联的变量,改变其中一个对象
16、的这个类变量就同时改变了其它对象的这个类变量。因此,类变量不仅可以通过某个对象访问也可以直接类变量不仅可以通过某个对象访问也可以直接通过类名访问。通过类名访问。实例变量仅仅是和相应的对象关联的变量,也就是说,不同对象的实例变量互不相同,即分配不同的内存空间,改变其中一个对象的实例变量不会影响其它对象的这个实例变量。实例变量可以通过对象访问,不能使用类名访问。.实例方法和类方法的区别实例方法和类方法的区别l实例方法可以被类创建的任何对象调用执行。l类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用 4.5 this 关键字关键字lthis是Java的一个关键字,表示某个对象。lth
17、is可以出现在实例方法和构造方法中,但可以出现在实例方法和构造方法中,但不可以出现在类方法中。不可以出现在类方法中。lthis关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。lthis关键字出现在类的实例方法中时,代表正在调用该方法的当前对象。4.6 包包l包是Java语言中有效地管理类的一个机制。1.包语句包语句 l 通过关键字package声明包语句。package 语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。package语句的一般格式为:package 包名;l 如果源程序中省略了package语句,源文件中你定义命名的类被隐含地认为是无名包的一部分
18、,即源文件中定义命名的类在同一个包中,但该包没有名字。l包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成。.import 语句语句 l 使用import 语句可以引入包中的类。l在编写源文件时,除了自己编写类外,我们经常需要使用Java提供的许多类,这些类可能在不同的包中。l在学习Java语言时,使用已经存在的类,避免一切从头做起,这是面向对象编程的一个重要方面。4.7访问权限访问权限l类创建了一个对象之后,该对象可以通过“.”运算符操作自己的变量、使用类中的方法,但对象操作自己的变量和使用类中的方法是有一定限制的。l所谓访问权限是指对象是否可以通过所谓访问权限是指对象是否可以
19、通过“.”运算符运算符操作自己的变量或通过操作自己的变量或通过“.”运算符使用类中的方运算符使用类中的方法。法。l访问限制修饰符有private、protected和public,都是Java的关键字,用来修饰成员变量或方法。1.私有变量和私有方法私有变量和私有方法l一个类在另外一个类中创建一个对象后,该对象不能访问自己的私有变量和私有方法 l对于一个类的私有类变量(静态成员变量),那么在另外一个类中,也不能通过类名来操作这个私有类变量。.共有变量和共有方法共有变量和共有方法l一个类在另外一个类中创建一个对象后,该对象能访问自己的public变量和public方法 l对于一个类的public类
20、变量(静态成员变量),那么在另外一个类中,也能通过类名来操作这个public类变量。3.友好变量和友好方法友好变量和友好方法l不用private、public、protected修饰符的成员变量和方法被称为友好变量和友好方法。l一个类在另外一个类中创建一个对象后,如果两个类在同一包同一包中,该对象能访问自己的友好变量和友好方法 l对于一个类的友好类变量(静态成员变量),如果两个类在同一包中,那么在另外一个类中,也能通过类名来操作这个友好类变量。.受保护的成员变量和方法受保护的成员变量和方法 l一个类在另外一个类中创建一个对象后,如果两个类在同一包同一包中,该对象能访问自己的protected变
21、量和protected方法 l对于一个类的protected类变量(静态成员变量),如果两个类在同一包中,那么在另外一个类中,也能通过类名来操作这个protected类变量。l在后面学习类的继承时,将讲述protected和“友好”之间在继承方面的区别。4.8类的继承类的继承l继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和新的状态和行为行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。Java不支持多重继承(子类只能有一个父类)。1.子类子类l在类的声
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java2 实用教程 课件
限制150内