Java程序设计实用教程 第4章 类与对象课件.ppt
《Java程序设计实用教程 第4章 类与对象课件.ppt》由会员分享,可在线阅读,更多相关《Java程序设计实用教程 第4章 类与对象课件.ppt(67页珍藏版)》请在三一办公上搜索。
1、2022/11/30,1,注意:开始用功了!,2022/11/30,2,Java程序设计实用教程 第4章,配合例子源代码一起使用,Power point 制作:耿祥义 张跃平,类 与 对 象,2022/11/30,3,导读,面向对象编程主要体现下列三个特性。 封装性 继承 多态,2022/11/30,4,4.1 从抽象到类,抽象的关键是抓住事物的两个方面:属性和功能。 抽象的目的是从具体的实例中抽取共有属性和功能形成一种数据类型。,2022/11/30,5,4.2 类,类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。 类的实现包括两部分:类声明和类体。基本
2、格式为:class 类名 类体的内容,2022/11/30,6,4.2.1 类声明,类声明 :class 类名例如:class Vehicle 其中的“class Vehicle”称作类声明;“Vehicle”是类名。 给类命名时,遵守下列编程风格(这不是语法要求的,但应当遵守): 1如果类名使用拉丁字母,那么名字的首字母使用大写字母,如。 2类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每个单词的首字母使用大写。,2022/11/30,7,4.2.2 类体, 类声明之后的一对大括号“”,“”以及它们之间的内容称作类体,大括号之间的内容称作类体的内容。 类体的内容由两部分构:一部
3、分是变量的声明,用来刻画属性;另一部分是方法的定义,用来刻画功能。,2022/11/30,8,例4-1,Vehicle .java,2022/11/30,9,4.2.3 成员变量,类体分为两部分:一部分是变量的声明,另一部分是方法的定义。变量声明部分所声明的变量被称做域变量或成员变量。,2成员变量的有效范围:成员变量在整个类内都有效,其有效性与它在类体中书写的先后位置无关。 3编程风格(1)一行只声明一个变量。 (2)变量的名字符合标识符规定。 (3)变量名字见名知意,避免容易混淆的变量名字。,1成员变量的类型:成员变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符
4、型;引用类型:数组、对象和接口。,2022/11/30,10,4.2.4 方法_ 1方法声明,方法的定义包括两部分:方法声明和方法体。一般格式为: 方法声明部分 方法体的内容 1方法声明 方法声明包括方法名和方法的返回类型,如: double getSpeed() return speed; 注:方法的返回类型、方法的参数、方法的名字,2022/11/30,11,4.2.4 方法_ 2方法体,2方法体 方法声明之后的一对大括号“” ,“”以及之间的内容称作方法的方法体。方法体的内容包括局部变量的声明和Java语句。 在方法体中声明的变量和方法的参数被称作局部变量。 局部变量只在声明它的方法内有
5、效,而且与其声明的位置有关。方法的参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。如果局部变量的声明是在一个复合语句中,那么该局部变量的有效范围是该复合语。,2022/11/30,12,4.2.4 方法_ 3区分成员变量和局部变量,3区分成员变量和局部变量 如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。 如果想在该方法中使用被隐藏的成员变量,必须使用关键字this 。,2022/11/30,13,4.2.5 需要注意的问题,类体的内容由两部分构成:一部分是变量的声明,另一部分是方法的定义。 对成员变量的操作只能放在方法中,方法可
6、以对成员变量和该方法体中声明的局部变量进行操作。在声明成员变量时可以同时赋予初值,但是不可以在类体中有单独的赋值语句(不可以有变量的声明和方法的定义以外的其它语句)。,2022/11/30,14,4.2.6 类的UML图,UML(Unified Modeling Language Diagram)图属于结构图,常被用于描述一个系统的静态结构。一个UML中通常包含有类(Class)的UML图,接口(Interface)的UML图以及泛化关系(Generalization)的UML图、关联关系(Association)的UML图、依赖关系(Dependency)的UML图和实现关系(Realiza
7、tion)的UML图。 在类的UML图中,使用一个长方形描述一个类的主要构成,将长方形垂直地分为三层。第1层是名字层;第2层是变量层,也称属性层;第3层是方法层,也称操作层。,2022/11/30,15,图4.1 Vehicle类的UML图,Vehicle.java,public class Vehicle double speed; int power; void speedUp(int s) speed=speed+s; void speedDown(int d) speed=speed-d; void setPower(int p) power=p; int getPower() ret
8、urn power; double getSpeed() return speed; ,2022/11/30,16,4.3 构造方法与对象的创建,类是面向对象语言中最重用的一种数据类型,那么就可以用它来声明变量。在面向对象语言中,用类声明的变量被称作对象。和基本数据类型不同,在用类声明对象后,还必须要创建对象,即为声明的对象分配变量(确定对象所具有的属性),当使用一个类创建一个对象时,也称给出了这个类的一个实例。通俗的讲,类是创建对象的“模板”,没有类就没有对象。构造方法和对象的创建密切相关 。,2022/11/30,17,4.3.1 构造方法,构造方法是一种特殊方法,它的名字必须与它所在的类
9、的名字完全相同,而且没有类型。 允许一个类中编写若干个构造方法,但必须保证他们的参数不同,即参数的个数不同,或者是参数的类型不同。 需要注意的是(1) 如果类中没有编写构造方法,系统会默认该类只有一个构造方法,该默认的构造方法是无参数的,且方法体中没有语句。(2)如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法 。,2022/11/30,18,4.3.2 创建对象1,2,1对象的声明一般格式为:类的名字 对象名字;如:Vehicle car;这里Vehicle是一个类的名字,car是我们声明的对象的名字。2.为声明的对象分配内存 使用new运算符和类的构造方法为声明的对象分配
10、变量,即创建对象。如果类中没有构造方法,系统会调用默认的构造方法,默认的构造方法是无参数的,且方法体中没有语句。如:car=new Vehiclee();,2022/11/30,19,例4-2,Example4_2.java ,Vehicle .java,2022/11/30,20,4.3.2 创建对象3,4,3对象的内存模型 (1)声明对象时的内存模型 Vehicle car1 ;,(2)对象分配内存后的内存模型 car1 = new Vehicle();,4创建多个不同的对象,2022/11/30,21,4.3.3 使用对象,对象不仅可以操作自己的变量改变状态,而且能调用类中的方法产生一定
11、的行为。 通过使用运算符“.”,对象可以实现对自己变量的访问和方法的调用。,1对象操作自己的变量(对象的属性) 对象.变量; 2对象调用类中的方法(对象的功能) 对象.方法; 3体现封装 当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量。,2022/11/30,22,图4.6 对象体现封装,代码:car1.setPower(128);car2.setPower(76);car1.speedUp(80);car2.speedUp(100);,2022/11/30,23,4.3.4 对象的引用和实体,类是体现封装的一种数据类型,类声明的变量称做对象,对象中负责存放引用,以确保对象可以
12、操作分配给该对象的变量以及调用类中的方法。分配给对象的变量习惯地称做对象的实体。 1避免使用空对象 没有实体的对象称作空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。2垃圾收集一个类声明的两个对象如果具有相同的引用,那么二者就具有完全相同的实体,而且Java有所谓“垃圾收集”机制,这种机制周期地检测某个实体是否已不再被任何对象所拥有(引用),如果发现这样的实体,就释放实体占有的内存。,2022/11/30,24,图4.7, 图4.8,代码:Vehicle carOne = new Vehicle ();Vehicle carTwo = new Vehicle ); carOne.
13、speedUp(60);carTwo.speedUp(90);,代码:carOne = carTwo,2022/11/30,25,例4-3,Example4_3.java ,Vehicle .java,2022/11/30,26,4.4 参数传值,方法中最重要的部分之一就是方法的参数,参数属于局部变量,当对象调用方法时,参数被分配内存空间,并要求调用者向参数专递值,即方法被调用时,参数变量必须有具体的值。,2022/11/30,27,4.4.1 传值机制,在Java中,方法的所有参数都是“传值”的,也就是说,方法中参数变量的值是调用者指定的值的拷贝。例如,如果向方法的int型参数x传递一个in
14、t值,那么参数x得到的值是传递的值的拷贝。,2022/11/30,28,4.4.2 基本数据类型参数的传值,对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别 。,2022/11/30,29,例4-4,Circle.java ,Example4_4.java,2022/11/30,30,4.4.3 引用类型参数的传值,当参数是引用类型时,“传值”传递的是变量中存放的“引用”,而不是变量所引用的实体。,2022/11/30,31,例4-5,TV.java ,Chineses.java , Example4_5.java,2022/11/30,32,4.4.4 可变参数,可变参数
15、是指在声明方法时不给出参数列表中从某项直至最后一项参数的名字和个数,但这些参数的类型必须相同。可变参数使用“”表示若干个参数,这些参数的类型必须相同,最后一个参数必须是参数列表中的最后一个参数。例如:public void f(int x) 那么,方法f的参数列表中,从第1个至最后一个参数都是int型,但连续出现的int型参数的个数不确定。称x是方法f的参数列表中的可变参数的“参数代表”。 参数代表可以通过下标运算来表示参数列表中的具体参数,即x0,x1xm分别表示x代表的第1个至第m个参数。,2022/11/30,33,例4-6,Computer.java ,Example4_6.java,
16、2022/11/30,34,4.5 有理数的类封装 例4-7,有理数有两个重要的成员:分子和分母,另外还有重要的四则运算。,例4-7Rational.java ,Example4_7.java,2022/11/30,35,4.6 对象的组合,一个类的成员变量可以是Java允许的任何数据类型,因此,一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该对象中就会有其他对象,也就是说该对象将其他对象作为自己的组成部分 。,2022/11/30,36,4.6.1 圆锥体 例4-8,例4-8 Circle.java,Circular.java ,Example4_8.java,2022/1
17、1/30,37,4.6.2 关联关系和依赖关系的UML图_1关联关系,1关联关系如果A类中成员变量是用B类声明的对象,那么A和B的关系是关联关系,称A关联于B或A组合了B。图4.16所示为例4-8中Circular类关联于Circle类的UML图。,2022/11/30,38,4.6.2 关联关系和依赖关系的UML图_2依赖关系,2依赖关系 如果A类中某个方法的参数是用B类声明的对象或某个方法返回的数据类型是B类对象,那么A和B的关系是依赖关系,称A依赖于B。图4.17所示为ClassRoom依赖于Student的UML图。,2022/11/30,39,4.7 实例成员与类成员 4.7.1 实
18、例变量和类变量的声明,在声明成员变量时,用关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称为static变量,静态变量)。class Dog float x; /实例变量 static int y; /类变量 ,2022/11/30,40,4.7.2 实例变量和类变量的区别,1不同对象的实例变量互不相同 2所有对象共享类变量 3通过类名直接访问类变量 例4-9 Lader.java , Example4_9.java,2022/11/30,41,4.7.3 实例方法和类方法的定义,类中的方法也可分为实例方法和类方法。方法声明时,方法类型前面不加关键字static修饰的是实例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计实用教程 第4章 类与对象课件 Java 程序设计 实用教程 对象 课件

链接地址:https://www.31ppt.com/p-1480960.html