第4章 类与对象的基本概念 .ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章 类与对象的基本概念 .ppt》由用户(hyngb9260)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 类与对象的基本概念 对象 基本概念
- 资源描述:
-
1、清华大学出版社清华大学出版社 JavaEE基础教程基础教程 第第4 4章类与对象的基本概念章类与对象的基本概念 4.14.1类与对象的概念类与对象的概念 4.2 4.2 类的访问权限与包的概念类的访问权限与包的概念 Java EEJava EE基础教程基础教程2 22023年年6月月4日星期日日星期日4.14.1类与对象的概念类与对象的概念返回v类是实现Java面向对象程序设计的基础,是对基本数据类型的扩充。类封装了对象的行为和属性,它是具有相同特征的同类对象的抽象模型(temp1ate),利用这个抽象模型可以构造具体的实例对象(instance)。Java EEJava EE基础教程基础教程
2、3 32023年年6月月4日星期日日星期日v 对象是Java程序中最核心、最基础的部分。对象在现实生活中是很普通的概念。所有的物体都可以被视为对象,大到宇宙,小到原子,都可以将其看作是对象。我们时常与对象在打交道,我们用的钢笔、骑的自行车、乘的公交车等。而我们经常见到的卡车、公交车、小轿车等都会涉及以下几个重要的物理量:可乘载的人数、运行速度、发动机的排量、耗油量、自重、轮子数目等。另外,还有加速、减速、刹车、转弯、播放音乐等几个重要的功能,这些功能称作是他们具有的方法。一个对象具有本身的属性即特征,这些特征决定对象的状态,对象还可通过自己的行为,不断改变自己的状态。Java EEJava E
3、E基础教程基础教程4 42023年年6月月4日星期日日星期日v 类与对象的关系犹如图纸与零件关系,先有图纸后有零件,图纸描述了零件的共同特征,零件是按图纸制造出来的。在程序中只能有类的一个定义,但该类可以有多个实例对象。在Java编程语言中使用new运算符实例化对象。v 要学习 Java 编程就必须首先学会怎样去写类,即怎样用 Java 的语法去描述对象共有的属性和功能。属性通过变量来刻画,功能通过方法来体现。类把属性和对属性的操作封装成一个整体。Java程序设计就是从类的设计开始的。v 基于对象的编程更加符合人的思维模式,编写的程序更加健壮和强大。更重要的是,面向对象编程鼓励创造性的程序设计
4、。Java EEJava EE基础教程基础教程5 52023年年6月月4日星期日日星期日v4.1.1类的声明v类由关键词calss来定义。一个类的定义包括两个部分:类声明和类体。类体的内容由两部分构成,一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来描述功能。Java EEJava EE基础教程基础教程6 62023年年6月月4日星期日日星期日v 类的定义的基本格式为:publicabstract|final class className extends superclassName implements interfaceNameListpublic|protected|pri
5、vate static final transient volatile type variableName;/成员变量public|protected|private static final|abstract native synchronized returnType methodName(paramList)throws exceptionList statements /成员方法v 其中,修饰符public、abstract、final说明了类的属性,className为类名,superclassName为类的父类的名字,interfaceNameList为类所实现的接口列表。Jav
6、a EEJava EE基础教程基础教程7 72023年年6月月4日星期日日星期日v 1类的成员变量在类中声明的变量就是成员变量,作用域是整个类。类的成员变量分为类成员变量和实例成员变量。类的成员变量的声明方式如下:public|protected|private static final transient volatile type variableName;其中:public:公有变量。protected:保护变量。private:私有变量。static:静态变量(类成员变量),相对于实例成员变量。final:常量。transient:暂时性变量,用于对象存档。volatile:贡献变量,
7、用于并发线程的共享。Java EEJava EE基础教程基础教程8 82023年年6月月4日星期日日星期日v2类的成员方法v成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块。一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消息作出响应,完成特定的功能。v成员方法一旦定义,便可在不同的场合中多次调用,故可增强程序结构的清晰度,提高编程效率。v成员方法的结构包括两部分内容:方法声明和方法体。方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是引用数据类型。Java EEJava EE基础教程基础教程9 92023年年
8、6月月4日星期日日星期日v成员方法的定义方式如下:vpublic|protected|private staticfinal|abstract native synchronizedvreturnType methodName(paramList)throws exceptionListv vstatementsv Java EEJava EE基础教程基础教程10102023年年6月月4日星期日日星期日方法声明中的限定词的含义:public:公共访问控制符。private:私有访问控制符。protected:保护访问控制符。static:类方法,可通过类名直接调用。abstract:抽象成员方
9、法,没有方法体。final:方法不能被重写。native:本地成员方法修饰符,集成其它语言的代码。synchronized:控制多个并发线程的访问。Java EEJava EE基础教程基础教程11112023年年6月月4日星期日日星期日v 下面是一个类名为“梯形”的类,类体内容的变量定义部分定义了 4 个 float 类型的变量“上底”,“下底”,“高”和“laderArea”。方法定义部分定义了两个方法“计算面积()”和“修改高()”。class 梯形 float 上底,下底,高,laderArea;float 计算面积()laderArea=(上底+下底)*高/2.0f;return la
10、derArea;void 修改高(float h)高=h;v 类体变量定义部分所定义的变量被称为类的成员变量。在方法体中定义的变量和方法的参数被称为局部变量。v 成员变量和局部变量的类型可以是Java中的任何一种数据类型,包括基本类型整型、浮点型、字符型、引用类型。Java EEJava EE基础教程基础教程12122023年年6月月4日星期日日星期日v 成员变量在整个类内都有效,局部变量只在定义它的方法内有效。例如:class LocalVariable int distance;int find()int a=12;distance=a;/合法,distance在整个类内有效。return
11、 distance;void gety()int y;y=a;/非法,a是局部变量,这里无法访问 Java EEJava EE基础教程基础教程13132023年年6月月4日星期日日星期日例例4-1 创建一个类,该类含有类的成员变量和成员方法,并对所创建的类进行测试。程序清单:ch04Text1.javaclass Text1 static int a;/当被定义为static类型时,为类变量,可被对象或类调用 int b;/实例对象变量,只能被对象调用 public void display(int a,int b)/成员方法 System.out.println(static int a=+
12、a);System.out.println(int b=+b);public static void display(int b)/类方法,可通过类名直接调用System.out.println(static display:int b=+b);Java EEJava EE基础教程基础教程14142023年年6月月4日星期日日星期日public static void main(String args)Text1 tt=new Text1();/创建实例对象ttt t.display(5,6);/不可以Text1.display(5,6);因为对象变量或对象方法只能被对象tt调用 Text1.
13、display(0);/当被定义为static类型时,为类方法,可被对象或类调用 tt.display(23);tt.a=9;Text1.a=24;tt.b=3;tt.display(a,15);Java EEJava EE基础教程基础教程15152023年年6月月4日星期日日星期日例例4-2 创建一个类,该类含有判断质数的成员方法,测试时从键盘输入一个数,判断是否为质数。读键盘采用Scanner类的nextInt()方法。程序清单:ch04PrimeNumber.javaimport java.util.Scanner;public class PrimeNumber /*用(int)Mat
14、h.sqrt(n)求出循环上限,isPrime()方法用来检测当前数是否为质数*/public static boolean isPrime(int num)boolean prime=true;int limit=(int)Math.sqrt(num);for(int i=2;i=limit;i+)if(num%i=0)prime=false;break;return prime;Java EEJava EE基础教程基础教程16162023年年6月月4日星期日日星期日public static void main(String args)Scanner input=new Scanner(S
15、ystem.in);System.out.print(请输入您要判断的数:);int n=input.nextInt();if(isPrime(n)System.out.println(n+是质数!);else System.out.println(n+不是质数!);Java EEJava EE基础教程基础教程17172023年年6月月4日星期日日星期日v4.1.2方法重载v方法重载指一个类中有多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。其实方法重载的最主要的作用就是实现同名的构造方法可以接受不同的参数。v参数类
16、型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。Java EEJava EE基础教程基础教程18182023年年6月月4日星期日日星期日例例4-3 创建一个类,该类包含两个重载的方法,对该类进行测试。程序清单:ch04MethodOverloadingTest.javaimport java.io.*;class MethodOverloadingvoid receive(int i)System.out.println(Receive one int data);System.out.println(i=+i);Java EEJava EE基础教程基础教程191920
17、23年年6月月4日星期日日星期日void receive(int x,int y)System.out.println(Receive two int datas);System.out.println(x=+x+y=+y);public class MethodOverloadingTestpublic static void main(String args)MethodOverloading mo=new MethodOverloading();mo.receive(1);mo.receive(2,3);Java EEJava EE基础教程基础教程20202023年年6月月4日星期日日星
18、期日例例4-4 编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。程序清单:ch04OverLoadingDemo.javaclass Father void speak()/无参数的speak()方法 System.out.println(I am Father!);void speak(String s)/有参数的speak(String s)方法 System.out.println(I like+s+.);Java EEJava EE基础教程基础教程21212023年年6月月4日星期日日星期日public class OverLoadingDemo
19、public static void main(String args)Father x=new Father();x.speak();/调用无参的speak()方法 x.speak(music);/调用有参的speak(music)方法 Java EEJava EE基础教程基础教程22222023年年6月月4日星期日日星期日v4.1.3构造方法vJava中有一种特殊的方法叫构造方法(Constructor),它是产生对象时需要调用的方法。Java 中的每个类都有构造方法,用来初始化该类的一个对象。构造方法具有和类名相同的名称,而且不返回任何数据类型。重载经常用于构造方法。构造方法只能由new
20、运算符调用。Java EEJava EE基础教程基础教程23232023年年6月月4日星期日日星期日构造方法的形式如下:public 类名(参数列表)语句体说明:构造方法名必须为该类名;可以通过参数表和方法体来给生成的对象的成员变量赋初值;构造方法没有任何返回值。每个类至少有一个构造函数。类被定义时如果没有显式地定义一个构造方法,那么编译器会自动创建一个默认构造方法,缺省构造函数没有参数,而且函数体为空。缺省构造方法的形式如下:public类名()这使得能够通过使用“new类名();”语句产生类的对象。Java EEJava EE基础教程基础教程24242023年年6月月4日星期日日星期日v一
21、旦在类中自定义了构造方法,编译器就不会提供默认的构造方法了。此时,语句“new 类名();”将会引起编译错误。v可以通过为几个构造函数提供不同的参数表的办法来重载构造函数。v如果有一个类带有几个构造函数,那么也许会想复制其中一个构造函数的某方面效果到另一个构造函数中。可以通过使用关键字this作为一个方法调用来达到这个目的。Java EEJava EE基础教程基础教程25252023年年6月月4日星期日日星期日例如:public class Employee private String name;private int salary;public Employee(String n,int
22、s)name=n;salary=s;public Employee(String n)this(n,0);public Employee()this(Unknown );在第二个构造函数中,有一个字符串参数,调用this(n,0)将控制权传递到构造函数的第一个版本,即采用了一个String参数和一个int参数的构造函数中。在第三个构造函数中,它没有参数,调用this(“Unknownn”)将控制权传递到构造函数的第二个版本,即采用了一个String参数的构造函数中,再由第二个版本传递带第一个版本中。Java EEJava EE基础教程基础教程26262023年年6月月4日星期日日星期日在任何构
23、造函数中如果出现对于this的调用,则必须是第一个语句。例例4-5 设计一个矩形类Rectangle,该类重载了多个构造方法。程序清单:ch04Crctngle.javaimport java.io.*;class Rectangle /矩形类 private int width;/矩形的宽度 private int length;/矩形的长度 Rectangle()/不带参数的构造函数,缺省的给出长(30)和宽(20)length=30;width=20;Rectangle(int l,int w)/带参数的构造函数 length=l;width=w;Java EEJava EE基础教程基础
24、教程27272023年年6月月4日星期日日星期日Rectangle(Rectangle r)/此构造方法以另一个Rectangle对象作为参数 width=r.width();/通过对象调用函数并附值给相应变量 length=r.length();int width()/返回宽度 return width;int length()/返回长度 return length;Java EEJava EE基础教程基础教程28282023年年6月月4日星期日日星期日public class CRctngle public static void main(String args)Rectangle x1
25、=new Rectangle();/声明类的对象并实例化 Rectangle x2=new Rectangle(50,40);/声明类的对象并初始化 Rectangle x3=new Rectangle(x1);System.out.println(x1.length()=+x1.length();System.out.println(x1.width()=+x1.width();System.out.println(x2.length()=+x2.length();System.out.println(x2.width()=+x2.width();System.out.println(x3.
展开阅读全文