《类与对象续》PPT课件.ppt
《《类与对象续》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《类与对象续》PPT课件.ppt(61页珍藏版)》请在三一办公上搜索。
1、1,第三章 类与对象(续),2,6、方法重载,在Java(和C+)里,多个构造方法都有相同的名字,它们被称为“重载”。方法重载即指多个方法可以享有相同的名字。但是这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。(但不能以返回值区分重载的方法),3,例如,要打印不同类型的数据,int,float,String,不需要定义不同名的方法:printInt(int);printFloat(float);printString(String)。利用方法重载,只需要定义一个方法名:println(),接收不同的参数:println(int);println(float);println(S
2、tring);例:overloading.java,4,7、this关键字,this 关键字只能在方法内部使用,表示对“调用方法的当前对象”的引用。例:MyThis2.java,作为返回值使用:当需要返回对当前对象的引用时,就可以在return语句里使用this。例:this.java,MyThis1.java,5,This的另一种使用方法:调用构造方法,可以使用this关键字在一个构造方法中调用另外的构造方法。代码更简洁,维护起来也更容易通常用参数个数比较少的构造方法调用参数个数最多的构造方法使用this关键字例子,MyThis3.java,BankAccount.java,6,8、对象的回
3、收,与C+不同,Java额外提供了垃圾回收器,对于不再使用的内存资源,垃圾回收器能自动将其释放,无需再使用类似C+里的析构函数destructor。Java运行时系统通过垃圾收集器周期性地释放无用对象所使用的内存Java运行时系统会在对对象进行自动垃圾回收前,自动调用对象的finalize()方法,7,8.1程序运行时的内部工作原理,程序的最小单元变量一旦被定义以后就在内存占用一定的空间。C,C+都允许动态的(在运行时)分配存储空间。堆(heap)是一种运行时的数据结构,是一个大的存储区域,用于支持动态的内存管理。Java里所有引用类型的对象都存储在堆里。栈(stack)也是一种运行时的数据结
4、构,为方法(函数)调用和返回处理提供存储空间。具体参考think in java第二章2.2节,8,C Language Memory Allocation,Dynamic libraries,Unitialized Data,Initialized data,DATA,SEGMENT,Heap,Stack,grows,grows,Text Segment,char*p=malloc(1024);,int iarray20;,int iarray2=1,2,3;,int main().,int myfunc(int x,float y)int z;,9,8.2 内存的分配与释放,内存是一种紧缺
5、的资源,不再需要时,应当尽快释放。C语言中,通过调用malloc()动态分配内存,用free()释放内存。C+语言中,则用new()与delete()。这些都属于由程序员显示地管理内存资源。如果程序员忘记释放内存,则容易造成内存泄漏甚至导致内存耗尽.Java中的所有对象都是基于堆分配内存,任何对象都可以从堆中分配不同的存储区域,也可以把它们返回堆中,这些操作没有固定的顺序,因而导致了内存产生很多碎片的问题。,10,Java采用系统管理资源,由系统跟踪内存的使用情况,释放不再使用的内存,这个处理过程称为垃圾回收(garbage collection)。垃圾收集器自动扫描对象的动态内存区,对不再使
6、用的对象做上标记以进行垃圾回收,11,finalize()方法提供一个手动释放资源的机会,当资源可能被某些对象占用,Java的内存管理系统无法直接访问,也不能自动释放时,就采用此方法。程序员大部分时间都不会用到此方法,而运行程序库大多用这种方式控制某些资源。,12,finalize()方法在类中声明,因此 Java中的每一个类都有该方法用于释放系统资源,如关闭打开的文件或socket等声明格式protected void finalize()throws throwable,13,9、包(package)(参考教材4.6,thinking in java 第5章),Java开发中,有时类名会相
7、同,同名的类就可能发生冲突。为了解决这一问题,Java提供包来管理类名,在C+里用命名空间来管理。但远不如Java灵活方便。,14,开发人员往往需要一个好的文件组织形式,以便把文件放在一个目录结构里,创建自己的工具库,以供自己或开发团队其他成员使用。这就需要打“包”。Java用“包”来表示相关类的集合,这些相关类可以属于多个文件,(当然有自己独立的.java和.class),把它们一起放到一个组群中,形成一个程序库。Java程序包相当于其它语言中的库函数。,打“包”,15,9.1包(package):程序库单元,包就是使用关键字import来导入整个程序库时那些变为可用的单元,如:import
8、 java.util.*这就把整个实用程序(utility)库都引入到程序中。J2SE里常用的程序库(包)有:java.lang,java.io,java.applet,java.awt,等,16,9.1.1类的打包,Java中用package语句来将一个Java源文件中的类组合为一个包。,17,声明一个包格式如下:package mypackage;(包名使用小写字母)public class MyClass/,18,其他程序欲使用MyClass中的任何其他public 类,就需要使用import关键字。import mypackage.*;/Myclass m=new MyClass();
9、,19,如何解决一个包里可以有许多.class文件,而且所有文件的名称必须保证是独一无二的,Java利用操作系统层次化的文件结构解决这个问题。,9.1.2创建独一无二的包名,20,Java编译器把包对应于文件系统的目录管理,package语句中,用“.”来指明目录的层次。则包的定义格式为:package pkg1.pkg2.pkg3;,21,例如:包mypackage下有一个类Student,以及包mypackage.school,school下有类Professor,类Student。,school,Path,Professor,mypackage,Eclipse开发环境下的E:myjava
10、GraceWu(GraceWu Project name),Student,Student,22,package mypackage.school;public class Professorpublic Professor()System.out.println(“professor”);,Professor.java,package mypackage.school;public class Studentpublic Student()System.out.println(“student”);,Student.java,23,在Eclipse环境下,建立package,建立包mypac
11、kage:在project 例如GraceWu下,点击右键,选中package。输入包名:mypackage。在mypackage下定义类Student。建立子包mypackage.school于mypackage下。然后在mypackage.school下定义两个类Student及Professor。,24,于GraceWu下,创建类Cun,里面声明Professor,Student对象。/Cun.javaimport mypackage.school.*;public class Cunpublic static void main(String args)Professor chang=
12、new Professor();Student li=new Student();.,包的使用,25,9.1.3创建Jar文件(压缩文件)参考教材,jar工具是个java应用程序,便于将java applet或应用程序打包成单个归档文件。在Eclipse环境下,选中欲打包的文件,点击右键,使用export即可把多个文件打包生成一个.jar文件并放置于指定目录。,26,10、Java 基本类库教材4.6,Java提供了用于语言开发的类库,称为Java基础类库(JFC,Java Foundational Class),也称应用程序编程接口(API,Application Programming I
13、nterface),分别放在不同的包中Java提供的包主要有java.lang,java.io,java.math,java.utiljava.applet,java.awt,java.rmi,java.security,java.sql等,27,10.1java.lang,语言包(java.lang)语言包java.lang提供了Java语言最基础的类,包括Object类数据类型包装类(the Data Type Wrapper)(前面已讲过)字符串类(String,StringBuffer)数学类(Math)系统和运行时类(System、Runtime)类操作类(Class,ClassLo
14、ader),28,10.1.1Object 类教材:4.2,Object类Java程序中所有类的直接或间接父类,类库中所有类的父类,处在类层次最高点包含了所有Java类的公共属性,其构造方法是Object()。从Eclipse的Hierarchy view可以看出文件里所有类之间的继承关系。,29,Object类定义了所有对象必须具有的状态和行为,主要的6个方法如下public final Class getClass()获取当前对象所属的类信息,返回Class对象(主要为系统编程人员提供)public String toString()(前面已讲)返回当前对象本身的有关信息,按字符串对象返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 类与对象续 对象 PPT 课件

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