类的定义和对象使用.ppt_第1页
类的定义和对象使用.ppt_第2页
类的定义和对象使用.ppt_第3页
类的定义和对象使用.ppt_第4页
类的定义和对象使用.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四讲类的定义和对象使用,第4章类和对象信息管理系武俊琢,*温故*,Java程序的开发过程数据类型运算符和表达式语句,本讲要点,面向对象编程的基本概念类的定义类首部类体成员变量成员方法对象的创建与使用创建对象使用对象构造方法,面向对象编程的基本概念,类和对象类是定义对象的模板,用来描述一类事物的共有属性和功能。对象是一个具体的事物。例:汽车类某辆汽车学生类某个学生窗口类某个具体的窗口,汽车(类)品牌型号颜色-加速与减速设计转向设计刹车设计,这辆汽车(对象)品牌:保时捷型号:980颜色:灰色-加速减速控制转向控制刹车控制,类的继承,类的继承类的定义可以是分层次的,低层的类具有高层类的属性和方法,称高层类为父类,低层类为子类。子类使用父类中定义的方法和变量时,就像它们属于子类本身一样。可以简化编程的过程,有利于代码的复用。子类除了拥有父类的方法和变量之外,也可以定义自己方法和变量。哺乳动物:胎生,能用母乳喂养幼仔。猫:胎生,能用母乳喂养幼仔。会捉老鼠。,类是Java语言中的一种复合数据类型,是组成Java程序的基本要素。Java的类具有两种基本成分:数据和行为(状态和方法)。类的这两种成分被封装在类体中,与外界隔开。,4.2类的声明,publicclassHelloWorld/类publicstaticvoidmain(Stringargs)/方法,或叫行为成分System.out.println(“Helloworld!”);,类的封装,importjava.awt.Graphics;importjava.applet.Applet;publicclassHelloAppletextendsApplet/类publicvoidpaint(Graphicsg)/方法g.drawString(Helloworld,20,20);,Java程序,publicclassPeople/P7,例floathight,weight;/状态,或叫数据成分Stringhead,ear,mouth;/状态voidspeak(Strings)/方法,或叫行为成分System.out.println(s);/-,类的封装,类的定义,修饰符class类名extends父类名类成员变量声明;类方法声明,类体,类首,最简单的类定义classA,类的修饰符有:public、abstract、final,extends父类名:表示所定义的类由“父类”继承而来。implements接口列表:该类对指定接口进行实现。,成员变量与局部变量,成员变量:是类的数据成分,在类体中直接定义,定义格式如下:修饰符变量类型成员变量名列表;成员变量的定义可以在定义前加修饰符:public、private、protected、final、static等,用来标识变量的使用范围和性质。局部变量:在方法体内定义的变量和方法的参数是局部变量。变量类型可以是基本数据类型,也可以是引用数据类型,如:数组、类类型。成员变量在整个类的内部有效,局部变量只在定义它的方法内有效。局部变量名可以和成员变量名重名,此时局部变量会隐藏成员变量,如果想在该方法内部使用成员变量,使用关键字this。publicclassPeoplefloathight,weight;Stringhead,ear,mouth;voidspeak(Strings)System.out.println(s);,成员方法,成员方法是类的行为成分,声明格式如下:修饰符返回值类型方法名(形参列表)方法体return表达式;1、修饰符:public、private、protected、static、final2、如果方法没有返回值,则使用void关键字。如果有返回值类型,则方法体中必须有return语句,并且表达式类型与方法类型一致。3、形式参数列表的形式如下:类型名形参名1,类型名形参名2,如:publicvoidout(intx,inty,floatf)System.out.println(“x=”+x+”y=”+y+”f=”+f);,classTrianglefloatsideA,sideB,sideC,lengthSum;voidsetSide(floatsideA,floatsideB,floatsideC)this.sideA=sideA;this.sideB=sideB;this.sideC=sideC;,类的定义-例1,定义描述“人”的类:,成员变量:姓名、性别、年龄;,classPersonStringname,sex;intage;voidsing()System.out.println(Icansing!);voiddance()System.out.println(Icandance!);voidout()/成员变量的操作只能放在方法中System.out.println(name:+name);System.out.println(age:+age);注意:一个类中可以没有main方法,此时它不是Java的application应用程序,也就是不能被Java虚拟机直接调用。,成员方法:唱歌,跳舞,输出,类的定义-例2梯形,梯形类:classLadderfloata,b,h;voidsetH(floath)this.h=h;floatcalculatArea()return(a+b)*h/2;,创建和使用对象,如何调用类中定义的成员变量和成员方法,在Java中类只有实例化为对象后才能被使用(注:main方法为特殊方法,由系统调用),对象的使用“分三步走”:,1、声明对象类名对象名;2、分配内存(对象的实例化)对象名=new类构造方法名(实参表);3、使用对象(对象的成员变量及方法的访问)对象名.方法名、对象名.成员变量名声明和初始化可以合并:类名对象名=new类的构造方法名(实参表);说明:构造方法名与类名相同,如果一个类中未定义构造方法,系统自动定义。,使用对象例3,方法一:在同一个类中使用对象classPerson.publicstaticvoidmain(Stringargs)Personp;p=newPerson();=zhangsan;p.age=20;p.sing();p.out();,使用对象例4,方法二:在不同类中使用对象classPerson.classPersonTestpublicstaticvoidmain(Stringargs)Personp;p=newPerson();=zhangsan;p.age=20;p.sing();p.out();例4.3西游记人物(P44),使用对象例5梯形,publicstaticvoidmain(Stringargs)floatarea;Ladderladder=newLadder();ladder.a=10.0f;ladder.b=20.0f;ladder.setH(5f);area=ladder.calculatArea();System.out.println(area=+area);,对象的内存模型,引用数据类型与引用变量:引用数据类型(数组、类)声明的变量为引用变量,引用变量本身并不存放数据,而只是存放数据的地址。Java的内存分配Java把内存划分成两种:栈内存、堆内存Personp;声明对象p时,在栈内存中分配空间,用来存放一个地址,此时地址未指向任何数据。p=newPerson();时,首先在堆内存中为对象分配存储空间,并对各成员变量进行初始化,数值型为0,布尔型为false,引用型为null;然后取得这个存储空间的地址(引用),将其“交给”引用变量p,以后对这个对象的操作全由p去控制。多次使用new便会创建多个不同的对象。在方法中定义的一些基本类型的变量和引用变量都是在方法的栈内存中分配。当在一段代码块(也就是一对之间)定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放为该变量分配的内存空间,以前所讲的变量分配都是在栈内存中存放的。,构造方法,我们在例6的Math类中增加一个方法:publicPerson()System.out.println(“我是构造方法,已被调用!);我们并没有调用对象的Person()方法,但是它却被执行了。这个方法就是构造方法,构造方法的说明,说明形式如下:构造方法修饰符方法名(形式参数列表)方法体构造方法的名字与类的名字相同构造方法没有返回类型(千万不要将返回值类型声明为void。也不能在方法内部使用return返回一个值。)一般将构造方法声明为公共的public型。构造方法对对象的创建是必须的。实际上Java语言为每一个类提供了一个默认的构造方法,也就是说,每个类都有构造方法。如果不定义一个构造方法,Java语言将调用它提供的默认的构造方法对一个新的对象进行初始化。,方法的重载,在一个类中可以定义同名的方法,但是参数的类型和个数不能完全相同,同名的方法可以有不同的方法体从而完成不同的任务,当调用方法时,系统会自动调用与实际参数类型和个数相匹配的的那一个方法,这就是方法的重载。在面向对象编程中,这种同一个名字可以有不同解释的现象称为多态。,作业,1、编程并上机调试:(60分)按以下要求创建一个学生类(Student),并完成相应的操作:其成员变量:姓名(name)、年龄(age)、身高(height)、体重(weight)成员方法:setAge用于给变量age赋值成员方法(out):按一定格式输出各成员变量的值。构造方法:通过参数传递,分别对name、height、weight初始化。最后,创建这个类的对象,并完成对成员变量赋值和输出的操作。2、写出你在实验过程中的问题及解决办法。(20分)3、总结本次试验的收获。(20分),技能训练四类的定义和对象使用,训练目的通过本次技能训练,使学生掌握类的定义和对象的使用。掌握类与对象的区别与联系,掌握成员变量与成员方法的定义,掌握构造方法的定义和使用技巧。训练内容及要求1、编程并上机调试:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论