一章类与对象的基本概念.ppt
《一章类与对象的基本概念.ppt》由会员分享,可在线阅读,更多相关《一章类与对象的基本概念.ppt(133页珍藏版)》请在三一办公上搜索。
1、JavaEE基础教程,第4章类与对象的基本概念,4.1类与对象的概念,4.2 类的访问权限与包的概念,Java EE基础教程,2,2023年8月4日星期五,4.1类与对象的概念,返回,类是实现Java面向对象程序设计的基础,是对基本数据类型的扩充。类封装了对象的行为和属性,它是具有相同特征的同类对象的抽象模型(temp1ate),利用这个抽象模型可以构造具体的实例对象(instance)。,Java EE基础教程,3,2023年8月4日星期五,对象是Java程序中最核心、最基础的部分。对象在现实生活中是很普通的概念。所有的物体都可以被视为对象,大到宇宙,小到原子,都可以将其看作是对象。我们时常
2、与对象在打交道,我们用的钢笔、骑的自行车、乘的公交车等。而我们经常见到的卡车、公交车、小轿车等都会涉及以下几个重要的物理量:可乘载的人数、运行速度、发动机的排量、耗油量、自重、轮子数目等。另外,还有加速、减速、刹车、转弯、播放音乐等几个重要的功能,这些功能称作是他们具有的方法。一个对象具有本身的属性即特征,这些特征决定对象的状态,对象还可通过自己的行为,不断改变自己的状态。,Java EE基础教程,4,2023年8月4日星期五,类与对象的关系犹如图纸与零件关系,先有图纸后有零件,图纸描述了零件的共同特征,零件是按图纸制造出来的。在程序中只能有类的一个定义,但该类可以有多个实例对象。在Java编
3、程语言中使用new运算符实例化对象。要学习 Java 编程就必须首先学会怎样去写类,即怎样用 Java 的语法去描述对象共有的属性和功能。属性通过变量来刻画,功能通过方法来体现。类把属性和对属性的操作封装成一个整体。Java程序设计就是从类的设计开始的。基于对象的编程更加符合人的思维模式,编写的程序更加健壮和强大。更重要的是,面向对象编程鼓励创造性的程序设计。,Java EE基础教程,5,2023年8月4日星期五,4.1.1类的声明类由关键词calss来定义。一个类的定义包括两个部分:类声明和类体。类体的内容由两部分构成,一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来描述功能。,
4、Java EE基础教程,6,2023年8月4日星期五,类的定义的基本格式为:publicabstract|final class className extends superclassName implements interfaceNameListpublic|protected|private static final transient volatile type variableName;/成员变量public|protected|private static final|abstract native synchronized returnType methodName(param
5、List)throws exceptionList statements/成员方法其中,修饰符public、abstract、final说明了类的属性,className为类名,superclassName为类的父类的名字,interfaceNameList为类所实现的接口列表。,Java EE基础教程,7,2023年8月4日星期五,1类的成员变量在类中声明的变量就是成员变量,作用域是整个类。类的成员变量分为类成员变量和实例成员变量。类的成员变量的声明方式如下:public|protected|private static final transient volatile type varia
6、bleName;其中:public:公有变量。protected:保护变量。private:私有变量。static:静态变量(类成员变量),相对于实例成员变量。final:常量。transient:暂时性变量,用于对象存档。volatile:贡献变量,用于并发线程的共享。,Java EE基础教程,8,2023年8月4日星期五,2类的成员方法成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块。一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消息作出响应,完成特定的功能。成员方法一旦定义,便可在不同的场合中多次调用,故可增强程序结构的清晰度,提高编
7、程效率。成员方法的结构包括两部分内容:方法声明和方法体。方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是引用数据类型。,Java EE基础教程,9,2023年8月4日星期五,成员方法的定义方式如下:public|protected|private staticfinal|abstract native synchronizedreturnType methodName(paramList)throws exceptionList statements,Java EE基础教程,10,2023年8月4日星期五,方法声明中的限定词的含义:public:公共访问控制符
8、。private:私有访问控制符。protected:保护访问控制符。static:类方法,可通过类名直接调用。abstract:抽象成员方法,没有方法体。final:方法不能被重写。native:本地成员方法修饰符,集成其它语言的代码。synchronized:控制多个并发线程的访问。,Java EE基础教程,11,2023年8月4日星期五,下面是一个类名为“梯形”的类,类体内容的变量定义部分定义了 4 个 float 类型的变量“上底”,“下底”,“高”和“laderArea”。方法定义部分定义了两个方法“计算面积()”和“修改高()”。class 梯形 float 上底,下底,高,lad
9、erArea;float 计算面积()laderArea=(上底+下底)*高/2.0f;return laderArea;void 修改高(float h)高=h;类体变量定义部分所定义的变量被称为类的成员变量。在方法体中定义的变量和方法的参数被称为局部变量。成员变量和局部变量的类型可以是Java中的任何一种数据类型,包括基本类型整型、浮点型、字符型、引用类型。,Java EE基础教程,12,2023年8月4日星期五,成员变量在整个类内都有效,局部变量只在定义它的方法内有效。例如:class LocalVariable int distance;int find()int a=12;dista
10、nce=a;/合法,distance在整个类内有效。return distance;void gety()int y;y=a;/非法,a是局部变量,这里无法访问,Java EE基础教程,13,2023年8月4日星期五,例4-1 创建一个类,该类含有类的成员变量和成员方法,并对所创建的类进行测试。程序清单:ch04Text1.javaclass Text1 static int a;/当被定义为static类型时,为类变量,可被对象或类调用 int b;/实例对象变量,只能被对象调用 public void display(int a,int b)/成员方法 System.out.println
11、(static int a=+a);System.out.println(int b=+b);public static void display(int b)/类方法,可通过类名直接调用System.out.println(static display:int b=+b);,Java EE基础教程,14,2023年8月4日星期五,public static void main(String args)Text1 tt=new Text1();/创建实例对象ttt t.display(5,6);/不可以Text1.display(5,6);因为对象变量或对象方法只能被对象tt调用 Text1.
12、display(0);/当被定义为static类型时,为类方法,可被对象或类调用 tt.display(23);tt.a=9;Text1.a=24;tt.b=3;tt.display(a,15);,Java EE基础教程,15,2023年8月4日星期五,例4-2 创建一个类,该类含有判断质数的成员方法,测试时从键盘输入一个数,判断是否为质数。读键盘采用Scanner类的nextInt()方法。程序清单:ch04PrimeNumber.javaimport java.util.Scanner;public class PrimeNumber/*用(int)Math.sqrt(n)求出循环上限,i
13、sPrime()方法用来检测当前数是否为质数*/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 EE基础教程,16,2023年8月4日星期五,public static void main(String args)Scanner input=new Scanner(System.in);System.out.print(请输入您要
14、判断的数:);int n=input.nextInt();if(isPrime(n)System.out.println(n+是质数!);else System.out.println(n+不是质数!);,Java EE基础教程,17,2023年8月4日星期五,4.1.2方法重载方法重载指一个类中有多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。其实方法重载的最主要的作用就是实现同名的构造方法可以接受不同的参数。参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。,Java EE基础教程,1
15、8,2023年8月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 EE基础教程,19,2023年8月4日星期五,void receive(int x,int y)System.out.println(Receive two int datas
16、);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 EE基础教程,20,2023年8月4日星期五,例4-4 编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。程序清单:ch04OverLoadingDemo.javaclass Father void
17、 speak()/无参数的speak()方法 System.out.println(I am Father!);void speak(String s)/有参数的speak(String s)方法 System.out.println(I like+s+.);,Java EE基础教程,21,2023年8月4日星期五,public class OverLoadingDemo public static void main(String args)Father x=new Father();x.speak();/调用无参的speak()方法 x.speak(music);/调用有参的speak(m
18、usic)方法,Java EE基础教程,22,2023年8月4日星期五,4.1.3构造方法Java中有一种特殊的方法叫构造方法(Constructor),它是产生对象时需要调用的方法。Java 中的每个类都有构造方法,用来初始化该类的一个对象。构造方法具有和类名相同的名称,而且不返回任何数据类型。重载经常用于构造方法。构造方法只能由new运算符调用。,Java EE基础教程,23,2023年8月4日星期五,构造方法的形式如下:public 类名(参数列表)语句体说明:构造方法名必须为该类名;可以通过参数表和方法体来给生成的对象的成员变量赋初值;构造方法没有任何返回值。每个类至少有一个构造函数。
19、类被定义时如果没有显式地定义一个构造方法,那么编译器会自动创建一个默认构造方法,缺省构造函数没有参数,而且函数体为空。缺省构造方法的形式如下:public类名()这使得能够通过使用“new类名();”语句产生类的对象。,Java EE基础教程,24,2023年8月4日星期五,一旦在类中自定义了构造方法,编译器就不会提供默认的构造方法了。此时,语句“new 类名();”将会引起编译错误。可以通过为几个构造函数提供不同的参数表的办法来重载构造函数。如果有一个类带有几个构造函数,那么也许会想复制其中一个构造函数的某方面效果到另一个构造函数中。可以通过使用关键字this作为一个方法调用来达到这个目的。
20、,Java EE基础教程,25,2023年8月4日星期五,例如:public class Employee private String name;private int salary;public Employee(String n,int s)name=n;salary=s;public Employee(String n)this(n,0);public Employee()this(Unknown);,在第二个构造函数中,有一个字符串参数,调用this(n,0)将控制权传递到构造函数的第一个版本,即采用了一个String参数和一个int参数的构造函数中。在第三个构造函数中,它没有参数,
21、调用this(“Unknownn”)将控制权传递到构造函数的第二个版本,即采用了一个String参数的构造函数中,再由第二个版本传递带第一个版本中。,Java EE基础教程,26,2023年8月4日星期五,在任何构造函数中如果出现对于this的调用,则必须是第一个语句。例4-5 设计一个矩形类Rectangle,该类重载了多个构造方法。程序清单:ch04Crctngle.javaimport java.io.*;class Rectangle/矩形类 private int width;/矩形的宽度 private int length;/矩形的长度 Rectangle()/不带参数的构造函数
22、,缺省的给出长(30)和宽(20)length=30;width=20;Rectangle(int l,int w)/带参数的构造函数 length=l;width=w;,Java EE基础教程,27,2023年8月4日星期五,Rectangle(Rectangle r)/此构造方法以另一个Rectangle对象作为参数 width=r.width();/通过对象调用函数并附值给相应变量 length=r.length();int width()/返回宽度 return width;int length()/返回长度 return length;,Java EE基础教程,28,2023年8月4
23、日星期五,public class CRctngle public static void main(String args)Rectangle x1=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()=+x
24、2.length();System.out.println(x2.width()=+x2.width();System.out.println(x3.length()=+x3.length();System.out.println(x3.width()=+x3.width();,Java EE基础教程,29,2023年8月4日星期五,4.1.4对象有了类,就可以创建类的对象。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。一个对象的生命周期包括三个阶段:生成、使用和消除。,Java EE基础教程,30,2023年8月4日
25、星期五,1对象的生成对象的生成包括声明、实例化。格式为:className objectName=new className(paramlist);声明:className objectName 声明并不为对象实体分配内存空间,而只是分配一个引用空间;对象的引用类似于指针,是32位的地址空间,它的值指向一个堆内存的数据空间,它存储着有关数据类型的信息以及堆内存中当前对象实体的地址,而对于对象实体所在堆中的实际的内存地址是不可操作的,这就保证了对象实体的安全性。,Java EE基础教程,31,2023年8月4日星期五,实例化:运算符new为对象分配内存空间,它调用对象的构造方法,返回对象的引用;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一章类 对象 基本概念

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