《类与对象续》PPT课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《类与对象续》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《类与对象续》PPT课件.ppt(61页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第三章 类与对象(续)16、方法重载在Java(和C+)里,多个构造方法都有相同的名字,它们被称为“重载”。方法重载即指多个方法可以享有相同的名字。但是这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。(但不能以返回值区分重载的方法)2例如,要打印不同类型的数据,int,float,String,不需要定义不同名的方法:printInt(int);printFloat(float);printString(String)。利用方法重载,只需要定义一个方法名:println(),接收不同的参数:println(int);println(float);println(String);
2、例:overloading.java37、this关键字this 关键字只能在方法内部使用,表示对“调用方法的当前对象”的引用。例:MyThis2.java,作为返回值使用:当需要返回对当前对象的引用时,就可以在return语句里使用this。例:this.java,MyThis1.java4This的另一种使用方法:调用构造方法可以使用this关键字在一个构造方法中调用另外的构造方法。代码更简洁,维护起来也更容易通常用参数个数比较少的构造方法调用参数个数最多的构造方法使用this关键字例子,MyThis3.java,BankAccount.java58、对象的回收与C+不同,Java额外提供
3、了垃圾回收器,对于不再使用的内存资源,垃圾回收器能自动将其释放,无需再使用类似C+里的析构函数destructor。Java运行时系统通过垃圾收集器周期性地释放无用对象所使用的内存Java运行时系统会在对对象进行自动垃圾回收前,自动调用对象的finalize()方法68.1 程序运行时的内部工作原理程序的最小单元变量一旦被定义以后就在内存占用一定的空间。C,C+都允许动态的(在运行时)分配存储空间。堆(heap)是一种运行时的数据结构,是一个大的存储区域,用于支持动态的内存管理。Java里所有引用类型的对象都存储在堆里。栈(stack)也是一种运行时的数据结构,为方法(函数)调用和返回处理提供
4、存储空间。具体参考think in java第二章2.2节7 C Language Memory AllocationDynamic librariesUnitialized DataInitialized dataDATASEGMENTHeapStackgrowsgrowsText Segmentchar*p=malloc(1024);int iarray20;int iarray2=1,2,3;int main().int myfunc(int x,float y)int z;88.2 内存的分配与释放内存是一种紧缺的资源,不再需要时,应当尽快释放。C语言中,通过调用malloc()动态分
5、配内存,用free()释放内存。C+语言中,则用new()与delete()。这些都属于由程序员显示地管理内存资源。如果程序员忘记释放内存,则容易造成内存泄漏甚至导致内存耗尽.Java中的所有对象都是基于堆分配内存,任何对象都可以从堆中分配不同的存储区域,也可以把它们返回堆中,这些操作没有固定的顺序,因而导致了内存产生很多碎片的问题。9Java采用系统管理资源,由系统跟踪内存的使用情况,释放不再使用的内存,这个处理过程称为垃圾回收(garbage collection)。垃圾收集器自动扫描对象的动态内存区,对不再使用的对象做上标记以进行垃圾回收10finalize()方法提供一个手动释放资源的
6、机会,当资源可能被某些对象占用,Java的内存管理系统无法直接访问,也不能自动释放时,就采用此方法。程序员大部分时间都不会用到此方法,而运行程序库大多用这种方式控制某些资源。11finalize()方法在类中声明,因此 Java中的每一个类都有该方法用于释放系统资源,如关闭打开的文件或socket等声明格式protected void finalize()throws protected void finalize()throws throwablethrowable129、包(package)(参考教材4.6,thinking in java 第5章)Java开发中,有时类名会相同,同名的类
7、就可能发生冲突。为了解决这一问题,Java提供包来管理类名,在C+里用命名空间来管理。但远不如Java灵活方便。13开发人员往往需要一个好的文件组织形式,以便把文件放在一个目录结构里,创建自己的工具库,以供自己或开发团队其他成员使用。这就需要打“包”。Java用“包”来表示相关类的集合,这些相关类可以属于多个文件,(当然有自己独立的.java和.class),把它们一起放到一个组群中,形成一个程序库。Java程序包相当于其它语言中的库函数。打“包”149.1 包(package):程序库单元包就是使用关键字import来导入整个程序库时那些变为可用的单元,如:import java.util.
8、*这就把整个实用程序(utility)库都引入到程序中。J2SE里常用的程序库(包)有:java.lang,java.io,java.applet,java.awt,等159.1.1类的打包Java中用package语句来将一个Java源文件中的类组合为一个包。16声明一个包格式如下:package mypackage;package mypackage;(包名使用小写字母)public class MyClass/17其他程序欲使用MyClass中的任何其他public 类,就需要使用import关键字。import mypackage.*;/Myclass m=new MyClass();
9、18如何解决一个包里可以有许多.class文件,而且所有文件的名称必须保证是独一无二的,Java利用操作系统层次化的文件结构解决这个问题。9.1.2创建独一无二的包名19Java编译器把包对应于文件系统的目录管理,package语句中,用“.”来指明目录的层次。则包的定义格式为:package pkg1.pkg2.pkg3;20例如:包mypackage下有一个类Student,以及包mypackage.school,school下有类Professor,类Student。schoolPathProfessormypackageEclipse开发环境下的开发环境下的E:myjavaGraceW
10、u(GraceWu Project name)StudentStudent21package mypackage.school;public class Professorpublic Professor()System.out.println(“professor”);Professor.javapackage mypackage.school;public class Studentpublic Student()System.out.println(“student”);Student.java22在Eclipse环境下,建立package建立包mypackage:在project 例如
11、GraceWu下,点击右键,选中package。输入包名:mypackage。在mypackage下定义类Student。建立子包mypackage.school于mypackage下。然后在mypackage.school下定义两个类Student及Professor。23于GraceWu下,创建类Cun,里面声明Professor,Student对象。/Cun.javaimport mypackage.school.*;public class Cunpublic static void main(String args)Professor chang=new Professor();St
12、udent li=new Student();.包的使用249.1.3创建Jar文件(压缩文件)参考教材jar工具是个java应用程序,便于将java applet或应用程序打包成单个归档文件。在Eclipse环境下,选中欲打包的文件,点击右键,使用export即可把多个文件打包生成一个.jar.jar文件并放置于指定目录。2510、Java 基本类库教材4.6Java提供了用于语言开发的类库,称为Java基础类库(JFC,Java Foundational Class),也称应用程序编程接口(API,Application Programming Interface),分别放在不同的包中Ja
13、va提供的包主要有java.lang,java.io,java.math,java.utiljava.applet,java.awt,java.rmi,java.security,java.sql等2610.1java.lang语言包(java.lang)语言包java.lang提供了Java语言最基础的类,包括ObjectObject类类数据类型包装类数据类型包装类(the Data Type Wrapper)(前面已讲过)字符串类字符串类(String,StringBuffer)数学类数学类(Math)系统和运行时类系统和运行时类(System、Runtime)类操作类类操作类(Class
14、,ClassLoader)2710.1.1Object 类教材:4.2Object类Java程序中所有类的直接或间接父类,类库中所有类的父类,处在类层次最高点包含了所有Java类的公共属性,其构造方法是Object()。从Eclipse的Hierarchy view可以看出文件里所有类之间的继承关系。28Object类定义了所有对象必须具有的状态和行为,主要的6个方法如下public final Class getClass()获取当前对象所属的类信息,返回Class对象(主要为系统编程人员提供)public String toString()(前面已讲)返回当前对象本身的有关信息,按字符串对
15、象返回public boolean equals(Objectobj)比较两个对象是否是同一对象,是则返回true29protected Object clone()生成当前对象的一个拷贝,并返回这个复制对象Public int hashCode()返回该对象的哈希代码值protected void finalize()throws Throwable 定义回收当前对象时所需完成的资源释放工作开发人员可以编写自己的方法,以替换这些基本的方法。30Java的String类进行特殊数组字符串处理。1)字符串声明及初始化Java中的字符串分常量和变量两种,常量初始化可由直接给一个String对象赋值
16、完成,对于字符串变量,在使用前同样要进行声明,初始化。初始化过程一般为下面几种:直接用字符串常量来初始化字符串:String s3=“Hello!Welcom to Java!”;字符串类(String)31由字符数组创建字符串:char ch =s,t,o,r,y;String s2=new String(ch);或String s4=new String(“Hello”);字符串数组:String strArray;strArray=new String8;strArray0=Hello;strArray1=“World”;32public class ArrayOfStringsDemo
17、 public static void main(String args)String anArray=String One,String Two,String Three;for(int i=0;i anArray.length;i+)System.out.println(anArrayi.toLowerCase();运行结果:string onestring twostring three332)字符串运算符“+”“+”可以连接不同的字符串,即:”abc”+”def”=“abcdef”.如果在“+”两端有一个是字符串,Java就会将非字符串的数据转换为字符串,然后进行字符串连接运算。34p
18、ublic class StrDemopublic static void main(String args)String st1=“Jack”,st2=“Brown”;String name=st1+“”+st2;System.out.println(“Name=”+name);double pi=3.1415926;String stt=“Hello,”+st1;System.out.println(stt+pi+2);System.out.println(pi+2+stt);运行结果为:运行结果为:Name=Jack BrownHello,Jack3.141592623.14159262
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 类与对象续 对象 PPT 课件
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内