面向对象程序设计 (2)2优秀PPT.ppt
《面向对象程序设计 (2)2优秀PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计 (2)2优秀PPT.ppt(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计面向对象程序设计第一页,本课件共有94页本章学习目标:本章学习目标:理解类与对象、封装、继承的概念理解类与对象、封装、继承的概念掌握类中成员变量和方法的声明与使用掌握类中成员变量和方法的声明与使用掌握对象的创建与使用掌握对象的创建与使用理解包的作用与用法理解包的作用与用法理解抽象类与接口的作用与用法理解抽象类与接口的作用与用法第二页,本课件共有94页6.1引言引言lJava语言作为一种语言作为一种面向对象面向对象的程序设计语言,的程序设计语言,具备面向对象技术的基本属性。具备面向对象技术的基本属性。l定义类和建立对象是定义类和建立对象是Java编程的主要任务。本编程的主要任务。
2、本章将介绍章将介绍Java面向对象程序设计的基础,即类、面向对象程序设计的基础,即类、对象、包、接口、类的继承等内容。对象、包、接口、类的继承等内容。l面向对象面向对象(Object Oriented,OO)的特点:的特点:封装封装+继承继承+多态多态+消息传递消息传递第三页,本课件共有94页6.2类类l类是类是Java语言的最基本概念,是组成语言的最基本概念,是组成Java程序的基本要程序的基本要素;素;l类是类是Java的执行单位,的执行单位,Java运行的就是运行的就是Java类本身;类本身;l类封装了该类对象的类封装了该类对象的成员变量成员变量和和方法方法。l类和对象的关系类和对象的关
3、系lJava的类分为两大部分的类分为两大部分系统定义的类系统定义的类用户自定义的类用户自定义的类 第四页,本课件共有94页public class Teacherprivate String name;protected int hours;protected long payment;public Teacher(String name,int hours)this.name=name;this.hours=hours;this.payment=0;public void show()System.out.println(name+工作了+hours+小时,应付+payment);publi
4、c void countPayment()payment=counting(1000,hours,50,0);public void resetHour()hours=0;public void addHour(int h)hours+=h;protected long counting(int base,int h,int perHour,long other)return(long)base+h*perHour+other;类声明类声明类体类体成员变量声明成员变量声明构造方法构造方法成员方法成员方法第五页,本课件共有94页6.2.1类声明类声明l类声明格式如下:类声明格式如下:类的修饰字类
5、的修饰字class 类名类名extends 父类名父类名implements 接口列表接口列表lclass是是声声明明一一个个类类的的关关键键字字,是是必必须须的的,类类名名是是要要声声明明的的类类的的名字名字,它必须是一个合法的它必须是一个合法的Java标识符。标识符。l根据声明类的需要,类声明还可以包含三个选项:根据声明类的需要,类声明还可以包含三个选项:声明类的修饰符;声明类的修饰符;说明该类的父类;说明该类的父类;说明该类所实现的接口。说明该类所实现的接口。第六页,本课件共有94页6.2.2类体类体l类体用一对大括号括起。类体用一对大括号括起。l类体中定义了该类中类体中定义了该类中所有
6、的变量所有的变量和该和该类所支持类所支持的方法的方法:成员变量对应类的成员变量对应类的静态属性静态属性方法对应类的行为和操作,方法对应类的行为和操作,动态属性动态属性第七页,本课件共有94页l成员变量成员变量成员变量是类和对象的成员变量是类和对象的静态属性静态属性,它可以是基本数据类型的,它可以是基本数据类型的变量,也可以是其它类(系统类或用户自定义类)的对象。变量,也可以是其它类(系统类或用户自定义类)的对象。因此,定义成员变量的操作就是说明变量或创建对象的操作。因此,定义成员变量的操作就是说明变量或创建对象的操作。l方法方法方法是类的方法是类的动态属性动态属性,标志了类所具有的功能和操作,
7、用来把类和,标志了类所具有的功能和操作,用来把类和对象的数据封装在一起。对象的数据封装在一起。Java的方法与其它语言中的函数或过程类似,是一段完成某的方法与其它语言中的函数或过程类似,是一段完成某种功能的程序段。种功能的程序段。第八页,本课件共有94页6.2.3成员变量成员变量l最简单的成员变量的声明方式如下:最简单的成员变量的声明方式如下:public|protected|privatestaticfinaltype 成员变量名成员变量名;这里的这里的type可以是可以是Java中任意的数据结构,包括简单类中任意的数据结构,包括简单类型、类、接口、数组。型、类、接口、数组。在一个类中的成员
8、变量应该是唯一的。在一个类中的成员变量应该是唯一的。l成员变量的作用域是成员变量的作用域是整个类整个类。第九页,本课件共有94页l1静态成员变量静态成员变量用用static修饰的成员变量就是修饰的成员变量就是静态成员变量静态成员变量(类变量)。(类变量)。静态成员变量最本质的特点是:它们是类的成员变量,不属于任静态成员变量最本质的特点是:它们是类的成员变量,不属于任何一个类的具体对象,它不保存在某个对象的内存区成员变量中,何一个类的具体对象,它不保存在某个对象的内存区成员变量中,而是保存在类的内存区成员变量的公共存储单元。而是保存在类的内存区成员变量的公共存储单元。换句话说,对该类的具体对象而
9、言,静态成员变量是一个公共的换句话说,对该类的具体对象而言,静态成员变量是一个公共的存储单元。任何一个类的对象访问它,得到的都是相同的值;任存储单元。任何一个类的对象访问它,得到的都是相同的值;任何一个类的对象修改它,都是对同一内存单元进行操作。何一个类的对象修改它,都是对同一内存单元进行操作。没有用没有用static修饰的变量是修饰的变量是实例变量实例变量,必须实例化该类才可以,必须实例化该类才可以使用实例变量。该类的不同对象都各自拥有自身的实例变量的使用实例变量。该类的不同对象都各自拥有自身的实例变量的版本。版本。第十页,本课件共有94页l2最终成员变量最终成员变量lfinal:用来声明一
10、个常量。:用来声明一个常量。如:如:classFinalVarfinal int CONSTANT=50;l此例中声明了常量此例中声明了常量CONSTANT,并赋值为,并赋值为50。对于用。对于用final限定的常量,在程序中不能改变它的值。通常常限定的常量,在程序中不能改变它的值。通常常量名用大写字母表示。量名用大写字母表示。第十一页,本课件共有94页6.2.4成员方法成员方法l方法由方法声明和方法体组成,其一般格式如下:方法由方法声明和方法体组成,其一般格式如下:public|protected|privatestaticfinal|abstractnativesynchronized 返
11、回值类型返回值类型 方法名(形式参数列表)方法名(形式参数列表)throws 异常列表异常列表 方法体各语句;方法体各语句;l其中返回类型可以是任意的其中返回类型可以是任意的Java数据类型,当一个方法不需要数据类型,当一个方法不需要返回值时,则必须声明其返回类型为返回值时,则必须声明其返回类型为void。l形式参数列表形式参数列表指明每个参数的名字和类型,各参数之间用逗指明每个参数的名字和类型,各参数之间用逗号分隔,号分隔,格式为:格式为:形参类型形参类型1 形参名形参名1,形参类型,形参类型2 形参名形参名2,第十二页,本课件共有94页classCircleintx,y,radius;/x
12、,y,radius是成员变量是成员变量publicCircle(intx,inty,intradius)/x,y,radius是参数是参数Circle类有三个成员变量:类有三个成员变量:x、y和和radius。在在Circle类类的的构构造造方方法法中中有有3个个参参数数,名名字字也也是是x、y和和radius。在在方方法法中中出出现现的的x、y和和radius指指的的是是参参数数名名,而而不不是是成成员员变变量量名。名。如如果果要要访访问问这这些些同同名名的的成成员员变变量量,必必须须通通过过“当当前前对对象象”指指示符示符this来引用它。来引用它。this.x=x;this.y=y;th
13、is.radius=radius;第十三页,本课件共有94页thislthis表示的是当前对象本身,更准确地说,表示的是当前对象本身,更准确地说,this代表当前对象的一个引用。代表当前对象的一个引用。l对象的引用可以理解为对象的另一个名字,通对象的引用可以理解为对象的另一个名字,通过引用可以顺利地访问到对象,包括访问、修过引用可以顺利地访问到对象,包括访问、修改对象的成员变量、调用对象的方法。改对象的成员变量、调用对象的方法。第十四页,本课件共有94页l方法体方法体方法体是对方法的实现。它包括局部变量的声明以方法体是对方法的实现。它包括局部变量的声明以及所有合法的及所有合法的Java指令。指
14、令。方法体中可以声明该方法中所用到的局部变量,它方法体中可以声明该方法中所用到的局部变量,它的作用域只在该方法内部,当方法返回时,局部变的作用域只在该方法内部,当方法返回时,局部变量也不再存在。量也不再存在。如果如果局部变量的名字局部变量的名字和和类的成员变量的名字类的成员变量的名字相同,相同,则则类的成员变量被隐藏。类的成员变量被隐藏。第十五页,本课件共有94页【例【例6-4】成员变量和局部变量的作用域示例。】成员变量和局部变量的作用域示例。classVariableintx=0,y=0,z=0;/类的成员变量类的成员变量voidinit(intx,inty)this.x=x;this.y=
15、y;intz=5;/局部变量局部变量System.out.println(*ininit*);System.out.println(x=+x+y=+y+z=+z);publicclassVariableTestpublicstaticvoidmain(Stringargs)Variablev=newVariable();System.out.println(*beforeinit*);System.out.println(x=+v.x+y=+v.y+z=+v.z);v.init(20,30);System.out.println(*afterinit*);System.out.println(
16、x=+v.x+y=+v.y+z=+v.z);第十六页,本课件共有94页6.2.5方法重载方法重载l方法重载即指多个方法可以享有相同的名字。方法重载即指多个方法可以享有相同的名字。但是这些方法的参数必须不同,或者是参数个但是这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。数不同,或者是参数类型不同。第十七页,本课件共有94页【例例】方法重载应用举例。方法重载应用举例。classMethodOverloadingvoidreceive(inti)System.out.println(Receiveoneintdata);System.out.println(i+i);voidrec
17、eive(intx,inty)System.out.println(Receivetwointdatum);System.out.println(x=+x+y=+y);voidreceive(doubled)System.out.println(Receiveonedoubledata);System.out.println(d=+d);voidreceive(Strings)System.out.println(Receiveastring);System.out.println(s=+s);publicclassMethodOverloadingTestpublicstaticvoidma
18、in(Stringargs)MethodOverloadingmo=newMethodOverloading();mo.receive(1);mo.receive(2,3);mo.receive(12.56);mo.receive(veryinteresting,isntit?);第十八页,本课件共有94页void receive(int i)void receive(int x,int y)void receive(double d)void receive(String s)-receive(1)-receive(2,3)-receive(12.56)-receive(very inter
19、esting,isnt it?)重载重载调用调用 图图 重载与调用关系重载与调用关系第十九页,本课件共有94页6.2.6构造方法构造方法l被自动调用的专门的初始化方法称为构造方法被自动调用的专门的初始化方法称为构造方法.l构造函数是类的一种特殊方法,其特殊性如下:构造函数是类的一种特殊方法,其特殊性如下:构造函数的方法名与类名相同。构造函数的方法名与类名相同。构造函数没有返回值。构造函数没有返回值。构造函数的作用是对类的对象初始化。构造函数的作用是对类的对象初始化。在创建一个类的新对象的同时,系统会自动调用该在创建一个类的新对象的同时,系统会自动调用该类的构造函数。类的构造函数。第二十页,本课
20、件共有94页l构造函数是与类同名的方法,创建对象的语句用构造函数是与类同名的方法,创建对象的语句用new运算符运算符开辟了新建对象的内存空间后,将调用构造函数初始化开辟了新建对象的内存空间后,将调用构造函数初始化这个新建对象。这个新建对象。一般将构造方法声明为公共的一般将构造方法声明为公共的public型,如果声明为型,如果声明为private型,型,那么就不能够创建对象的实例了,因为构造方法是在对象的外那么就不能够创建对象的实例了,因为构造方法是在对象的外部被默认地调用。部被默认地调用。Java语言为每一个类提供了一个默认的构造方法,也就是说,每个类语言为每一个类提供了一个默认的构造方法,也
21、就是说,每个类都有构造方法,用来初始化该类的一个新的对象。如果不定义一个构都有构造方法,用来初始化该类的一个新的对象。如果不定义一个构造方法,造方法,Java语言将调用它提供的默认的构造方法对一个新的语言将调用它提供的默认的构造方法对一个新的对象进行初始化。对象进行初始化。在构造方法的实现中,也可以进行方法重载。在构造方法的实现中,也可以进行方法重载。第二十一页,本课件共有94页【例例】构造方法的实现。构造方法的实现。classpointintx,y;point()/定义构造方法定义构造方法x=0;y=0;point(intx,inty)/构造方法的重载构造方法的重载this.x=x;this
22、.y=y;第二十二页,本课件共有94页6.2.7main()方法方法lmain()方法是方法是Java应用程序必须具备的方法。应用程序必须具备的方法。格式是:格式是:public static void main(String args)l所有所有Java的独立应用程序都从的独立应用程序都从main()开始执行。开始执行。把把static放在方法名前就使方法变为静态的方法,放在方法名前就使方法变为静态的方法,即类方法而非实例方法。即类方法而非实例方法。第二十三页,本课件共有94页6.2.8finalize()方法方法l在对对象进行垃圾收集前,在对对象进行垃圾收集前,Java运行时系统会运行时系
23、统会自动调用对象的自动调用对象的finalize()方法来释放系统资源,方法来释放系统资源,如打开的文件或如打开的文件或socket。该方法的声明必须如。该方法的声明必须如下所示:下所示:protected void finalize()throws throwablel注意如果不定义注意如果不定义finalize方法,方法,Java将调用它提将调用它提供的默认的供的默认的finalize方法进行扫尾工作。方法进行扫尾工作。第二十四页,本课件共有94页【例例】finalize方法举例。方法举例。classmyclassintm_DataMember1;floatm_DataMember2;pu
24、blicmyClass()/构造函数构造函数m_DataMember1=1;/初始化变量初始化变量m_DataMember2=7.25;voidfinalize()/定义定义finalize方法方法m_DataMember1=null;/释放内存释放内存m_DataMember2=null;第二十五页,本课件共有94页6.3对象对象l对象是类的实例化,对象的创建是通过对象构对象是类的实例化,对象的创建是通过对象构造方法来实现的;造方法来实现的;l我们可以生成多个对象,通过消息传递来进行我们可以生成多个对象,通过消息传递来进行交互,最终完成复杂的任务;交互,最终完成复杂的任务;l消息传递是指激活
25、指定的某个对象的方法,以消息传递是指激活指定的某个对象的方法,以改变它的状态或使其产生一定的动作。改变它的状态或使其产生一定的动作。l一个对象的生命期包括三个阶段:创建、使用一个对象的生命期包括三个阶段:创建、使用和清除。和清除。第二十六页,本课件共有94页6.3.1对象的创建对象的创建l对象的创建包括声明、实例化和初始化三方面的内容。对象的创建包括声明、实例化和初始化三方面的内容。l一般格式为:一般格式为:type ObjectName=new type(paramlist);type objectName声声明明了了一一个个类类型型为为type的的对对象象,其其中中type是是引引用用类型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 22优秀PPT 面向 对象 程序设计 优秀 PPT
限制150内