对象的初始化和清理.ppt

对象的初始化和清理.ppt

ID:52494791

大小:536.05 KB

页数:9页

时间:2020-04-08

对象的初始化和清理.ppt_第1页
对象的初始化和清理.ppt_第2页
对象的初始化和清理.ppt_第3页
对象的初始化和清理.ppt_第4页
对象的初始化和清理.ppt_第5页
资源描述:

《对象的初始化和清理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章对象的初始化和清理在Java中一切皆为对象,所以在涉及到初始化和清理时必然提及对象,即对象的初始化和对象的清理。对象的初始化完成对象初始状态的设定,如初始化一些参数,构造一个新的对象等。对象的清除涉及到内存的操作,即对象在不使用时必须有适当的机制释放该对象占用的内存,否则内存中累积的对象很快会耗尽内存资源。Java在创建一个新对象时引入了构造函数的概念,并且在对象清除中引入了“垃圾回收器”,垃圾回收器可以自动释放系统不再使用的内存资源,从而不会出现内存泄露的问题,相比于C++语言而言更安全,程序员在编写代码时不必考虑释放资

2、源的代码,垃圾回收器完成内存资源释放工作。本章讨论对象的初始化和对象的清理,本章的知识点会显得零散,但是认真研究每节所讨论的问题,会对初始化和清理有一个完整而清晰的认识。8.1构造函数构造函数是Java中一种特殊的函数,通过构造函数可以顺利的完成对象的初始化工作,当创建一个新的对象时,Java首先调用构造函数确保对象得到适当的初始化。构造函数与普通函数有不同之处:(1)构造函数没有返回值,其实也不需要返回值,虽然创建对象时确实返回了对象引用,但是构造函数本身不允许返回任何数据类型。(2)构造函数的名称必须和其相应的类具有相同的名

3、字,大小写完全一样。因为构造函数的调用是Java完成的,所以必须让编译器知道如何找到构造函数,而编译器在加载类时就已经知道了构造函数的“样子”了,所以很容易在类中找到该函数而初始化一些参数。(3)构造函数在每次创建新对象时被编译器自动调用。代码是带有构造函数的类的例子。8.1.1默认构造函数默认构造函数是用户没有定义的情况下,系统自动调用的构造函数,任何一个类在创建新对象时都是需要构造函数完成初始化的,如果用户没有定义构造函数,编译器就认为用户同意按照系统默认的方式构造该对象了。但是这个调用用户看不见,是系统的内部行为。是潜在的

4、一种函数调用。代码默认构造函数的示例程序可以说明这种情况。代码默认构造函数示例1classTree{2publicvoidsetHeight(){3System.out.println(“settheheightofthetree!”);4}6}7publicclassSimpleConstructor{5publicstaticvoidmain(String[]args){4//创建新对象,并赋予对象引用tree,此时调用默认构造函数11Treetree=newTree();12tree.setHeight();13}14}8

5、.1.2自定义构造函数Java提供了另一种构造函数的定义方式,即用户自定义的构造函数。这种思想很容易理解,对象的创建一定满足需求,而对象的初始化自然不能千篇一律的按照固定的模式。这样用户依据需求分析设计的类在初始化时自然具有多样性。用户自定义的构造函数分为有参数的构造函数和无参数的构造函数。Java也允许一个类具有多个构造函数,在创建对象时编译器根据构造函数的参数类型和参数个数来分辨调用哪个构造函数(这里涉及到函数重载的概念),代码展示了一个类具有多个构造函数的情况。如代码默认构造函数示例1classTree{2inttreeh

6、eight;3Tree(){//创建无参数构造函数4System.out.println(“初始化无参数Tree”);5}6Tree(intheight){//创建有参数构造函数,参数设置Tree的高度7treeheight=height;8System.out.println(“初始化有参数Tree”);9}10publicstaticvoidmain(String[]args){11newTree();//创建Tree对象,系统调用无参数构造函数12newTree(12);//创建Tree对象,系统调用有参数构造函数13}1

7、4}8.2函数的重载函数是对象的行为特性,或者说是一种动作,为函数起名字相当于为行为取名字,这样的名字要求具有实际意义,易于理解和维护。如定义一个读数据库的方法ReadDataBase(),这样的函数名字就易于理解,也很好的说明了行为的内容是读数据库信息。但是同样的读数据库信息的方法也有区别,如一个系统有多个数据库,有本地数据库和网络数据库,那到底是读本地数据库呢还是读取网络数据库的信息呢,所以为了区别具有相同行为内容却又有差异的函数,Java提供了函数重载的概念。我们可以设置如上的ReadDataBase()方法的参数来区分到

8、底读哪个数据库的信息,如果是读取本地数据库的信息,可以传入一个本地数据库链接的字符串,或不用参数,如果是链接网络数据库可以传入一个网络地址,这样具有同名的方法通过形式参数的不同而实现了方法重载,在构造函数中我们提到过重载的概念,这里通过一个例子说明构造函数重载和

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。