仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1855|回复: 20
打印 上一主题 下一主题

[学习教程] 了解下JAVA的java承继和finalize()

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:21 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.
经由过程“分解”办法创立新类时,永久不用忧虑对谁人类的成员对象的扫尾事情。每一个成员都是一个自力的对象,以是会失掉一般的渣滓搜集和扫尾处置——不管它是否是不本人某个类一个成员。但在举行初始化的时分,必需掩盖衍生类中的finalize()办法——假如已计划了某个特别的扫除历程,请求它必需作为渣滓搜集的一部分举行。掩盖衍生类的finalize()时,务必记着挪用finalize()的基本类版本。不然,基本类的初始化基本不会产生。上面这个例子即是明证:
  1. //:Frog.java
  2. //Testingfinalizewithinheritance
  3. classDoBaseFinalization{
  4. publicstaticbooleanflag=false;
  5. }
  6. classCharacteristic{
  7. Strings;
  8. Characteristic(Stringc){
  9. s=c;
  10. System.out.println(
  11. "CreatingCharacteristic"+s);
  12. }
  13. protectedvoidfinalize(){
  14. System.out.println(
  15. "finalizingCharacteristic"+s);
  16. }
  17. }
  18. classLivingCreature{
  19. Characteristicp=
  20. newCharacteristic("isalive");
  21. LivingCreature(){
  22. System.out.println("LivingCreature()");
  23. }
  24. protectedvoidfinalize(){
  25. System.out.println(
  26. "LivingCreaturefinalize");
  27. //Callbase-classversionLAST!
  28. if(DoBaseFinalization.flag)
  29. try{
  30. super.finalize();
  31. }catch(Throwablet){}
  32. }
  33. }
  34. classAnimalextendsLivingCreature{
  35. Characteristicp=
  36. newCharacteristic("hasheart");
  37. Animal(){
  38. System.out.println("Animal()");
  39. }
  40. protectedvoidfinalize(){
  41. System.out.println("Animalfinalize");
  42. if(DoBaseFinalization.flag)
  43. try{
  44. super.finalize();
  45. }catch(Throwablet){}
  46. }
  47. }
  48. classAmphibianextendsAnimal{
  49. Characteristicp=
  50. newCharacteristic("canliveinwater");
  51. Amphibian(){
  52. System.out.println("Amphibian()");
  53. }
  54. protectedvoidfinalize(){
  55. System.out.println("Amphibianfinalize");
  56. if(DoBaseFinalization.flag)
  57. try{
  58. super.finalize();
  59. }catch(Throwablet){}
  60. }
  61. }
  62. publicclassFrogextendsAmphibian{
  63. Frog(){
  64. System.out.println("Frog()");
  65. }
  66. protectedvoidfinalize(){
  67. System.out.println("Frogfinalize");
  68. if(DoBaseFinalization.flag)
  69. try{
  70. super.finalize();
  71. }catch(Throwablet){}
  72. }
  73. publicstaticvoidmain(String[]args){
  74. if(args.length!=0&&
  75. args[0].equals("finalize"))
  76. DoBaseFinalization.flag=true;
  77. else
  78. System.out.println("notfinalizingbases");
  79. newFrog();//Instantlybecomesgarbage
  80. System.out.println("bye!");
  81. //Mustdothistoguaranteethatall
  82. //finalizerswillbecalled:
  83. System.runFinalizersOnExit(true);
  84. }
  85. }///:~
复制代码
DoBasefinalization类只是复杂地包容了一个标记,向分级布局中的每一个类指出是不是应挪用super.finalize()。这个标记的设置创建在命令行参数的基本上,以是可以在举行和不举行基本类扫尾事情的条件下检察举动。
分级布局中的每一个类也包括了Characteristic类的一个成员对象。人人能够看到,不管是不是挪用了基本类扫尾模块,Characteristic成员对象都一定会失掉扫尾(扫除)处置。
每一个被掩盖的finalize()最少要具有对protected成员的会见权利,由于Object类中的finalize()办法具有protected属性,而编译器不同意我们在承继过程当中打消会见权限(“友爱的”比“遭到回护的”具有更小的会见权限)。
在Frog.main()中,DoBaseFinalization标记会失掉设置,并且会创立独自一个Frog对象。请记着渣滓搜集(出格是扫尾事情)大概不会针对任何特定的对象产生,以是为了强迫接纳这一举动,System.runFinalizersOnExit(true)增加了分外的开支,以包管扫尾事情的一般举行。若没有基本类初始化,则输入了局是:
  1. notfinalizingbases
  2. CreatingCharacteristicisalive
  3. LivingCreature()
  4. CreatingCharacteristichasheart
  5. Animal()
  6. CreatingCharacteristiccanliveinwater
  7. Amphibian()
  8. Frog()
  9. bye!
  10. Frogfinalize
  11. finalizingCharacteristicisalive
  12. finalizingCharacteristichasheart
  13. finalizingCharacteristiccanliveinwater
复制代码
从中能够看出的确没无为基本类Frog挪用扫尾模块。但假设在命令行到场“finalize”自变量,则会取得下述了局:
  1. CreatingCharacteristicisalive
  2. LivingCreature()
  3. CreatingCharacteristichasheart
  4. Animal()
  5. CreatingCharacteristiccanliveinwater
  6. Amphibian()
  7. Frog()
  8. bye!
  9. Frogfinalize
  10. Amphibianfinalize
  11. Animalfinalize
  12. LivingCreaturefinalize
  13. finalizingCharacteristicisalive
  14. finalizingCharacteristichasheart
  15. finalizingCharacteristiccanliveinwater
复制代码
只管成员对象依照与它们创立时不异的按次举行扫尾,但从手艺角度说,并没有指定对象扫尾的按次。但关于基本类,我们可对扫尾的按次举行把持。接纳的最好按次恰是在这里接纳的按次,它与初始化按次恰好相反。依照与C++顶用于“损坏器”不异的情势,我们应当起首实行衍生类的扫尾,再是基本类的扫尾。这是因为衍生类的扫尾大概挪用基本类中不异的办法,请求基本类组件仍旧处于举动形态。因而,必需提早将它们扫除(损坏)。
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.
飘灵儿 该用户已被删除
21#
发表于 2015-6-4 17:25:43 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
分手快乐 该用户已被删除
20#
发表于 2015-4-29 20:37:14 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
深爱那片海 该用户已被删除
19#
发表于 2015-4-27 19:16:31 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
谁可相欹 该用户已被删除
18#
发表于 2015-4-21 06:30:47 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
活着的死人 该用户已被删除
17#
发表于 2015-4-16 20:10:30 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
只想知道 该用户已被删除
16#
发表于 2015-4-13 19:26:37 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
简单生活 该用户已被删除
15#
发表于 2015-4-8 09:34:36 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
柔情似水 该用户已被删除
14#
发表于 2015-4-3 04:29:03 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
冷月葬花魂 该用户已被删除
13#
发表于 2015-3-25 07:27:17 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
蒙在股里 该用户已被删除
12#
发表于 2015-3-20 21:04:32 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-18 02:11:19 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
再现理想 该用户已被删除
10#
发表于 2015-3-11 09:09:19 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
兰色精灵 该用户已被删除
9#
发表于 2015-3-7 08:49:03 | 只看该作者
是一种使用者不需花费很多时间学习的语言
山那边是海 该用户已被删除
8#
发表于 2015-3-6 18:06:51 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
乐观 该用户已被删除
7#
发表于 2015-3-6 05:34:49 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
小妖女 该用户已被删除
6#
发表于 2015-2-25 09:42:16 | 只看该作者
是一种使用者不需花费很多时间学习的语言
5#
发表于 2015-2-8 11:03:22 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
老尸 该用户已被删除
地板
发表于 2015-2-2 22:09:31 来自手机 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
透明 该用户已被删除
板凳
发表于 2015-1-27 06:08:52 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 07:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表