仓酷云

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

[学习教程] 了解下JAVA的在java中发生准确的举动

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

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

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

x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
晓得Java里绑定的一切办法都经由过程前期绑定具有多形性今后,就能够响应地编写本人的代码,令其与基本类相同。此时,一切的衍生类都包管能用不异的代码一般地事情。大概换用另外一种办法,我们能够“将一条动静发给一个对象,让对象自行判别要做甚么事变。”

在面向对象的程序计划中,有一个典范的“外形”例子。因为它很简单用可视化的情势体现出来,以是常常都用它申明成绩。但很不幸的是,它大概误导初学者以为OOP只是为图形化编程计划的,这类熟悉固然是毛病的。

外形例子有一个基本类,名为Shape;别的另有大批衍生范例:Circle(圆形),Square(方形),Triangle(三角形)等等。人人之以是喜好这个例子,由于很简单了解“圆属于外形的一品种型”等观点。上面这幅承继图向我们展现了它们的干系:

<br>
上溯外型可用上面这个语句复杂地体现出来:

Shapes=newCircle();

在这里,我们创立了Circle对象,并将了局句柄当即赋给一个Shape。这外表看起来仿佛属于毛病操纵(将一品种型分派给另外一个),但实践是完整可行的——由于依照承继干系,Circle属于Shape的一种。因而编译器承认上述语句,不会向我们提醒一条堕落动静。
当我们挪用个中一个基本类办法时(已在衍生类里掩盖):
s.draw();
一样地,人人大概以为会挪用Shape的draw(),由于这究竟是一个Shape句柄。那末编译器如何才干晓得该做其他任何事变呢?但此时实践挪用的是Circle.draw(),由于前期绑定已参与(多形性)。
上面这个例子从一个略微分歧的角度申明了成绩:
  1. //:Shapes.java
  2. //PolymorphisminJava
  3. classShape{
  4. voiddraw(){}
  5. voiderase(){}
  6. }
  7. classCircleextendsShape{
  8. voiddraw(){
  9. System.out.println("Circle.draw()");
  10. }
  11. voiderase(){
  12. System.out.println("Circle.erase()");
  13. }
  14. }
  15. classSquareextendsShape{
  16. voiddraw(){
  17. System.out.println("Square.draw()");
  18. }
  19. voiderase(){
  20. System.out.println("Square.erase()");
  21. }
  22. }
  23. classTriangleextendsShape{
  24. voiddraw(){
  25. System.out.println("Triangle.draw()");
  26. }
  27. voiderase(){
  28. System.out.println("Triangle.erase()");
  29. }
  30. }
  31. publicclassShapes{
  32. publicstaticShaperandShape(){
  33. switch((int)(Math.random()*3)){
  34. default://Toquietthecompiler
  35. case0:returnnewCircle();
  36. case1:returnnewSquare();
  37. case2:returnnewTriangle();
  38. }
  39. }
  40. publicstaticvoidmain(String[]args){
  41. Shape[]s=newShape[9];
  42. //Fillupthearraywithshapes:
  43. for(inti=0;i<s.length;i++)
  44. s[i]=randShape();
  45. //Makepolymorphicmethodcalls:
  46. for(inti=0;i<s.length;i++)
  47. s[i].draw();
  48. }
  49. }///:~
复制代码
针对从Shape衍生出来的一切工具,Shape创建了一个通用接口——也就是说,一切(多少)外形都能够刻画和删除。衍生类掩盖了这些界说,为每种特别范例的多少外形都供应了举世无双的举动。
在主类Shapes里,包括了一个static办法,名为randShape()。它的感化是在每次挪用它时为某个随机选择的Shape对象天生一个句柄。请注重上溯外型是在每一个return语句里产生的。这个语句获得指向一个Circle,Square大概Triangle的句柄,并将其作为前往范例Shape发给办法。以是不管甚么时分挪用这个办法,就相对没时机懂得它的详细范例究竟是甚么,由于一定会取得一个纯真的Shape句柄。
main()包括了Shape句柄的一个数组,个中的数据经由过程对randShape()的挪用填进。在这个时分,我们晓得本人具有Shape,但不知除此以外任何详细的情形(编译器一样不知)。但是,当我们在这个数组里步进,并为每一个元素挪用draw()的时分,与各种型有关的准确举动会把戏般地产生,就象上面这个输入示例展现的那样:
  1. Circle.draw()
  2. Triangle.draw()
  3. Circle.draw()
  4. Circle.draw()
  5. Circle.draw()
  6. Square.draw()
  7. Triangle.draw()
  8. Square.draw()
  9. Square.draw()
复制代码
固然,因为多少外形是每次随机选择的,以是每次运转都大概有分歧的了局。之以是要凸起外形的随机选择,是为了让人人深入体味这一点:为了在编译的时分收回准确的挪用,编译器毋需取得任何特别的谍报。对draw()的一切挪用都是经由过程静态绑定举行的。
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,
山那边是海 该用户已被删除
沙发
发表于 2015-1-21 10:52:55 | 只看该作者
是一种使用者不需花费很多时间学习的语言
板凳
发表于 2015-1-30 15:58:39 来自手机 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-1 22:49:41 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
只想知道 该用户已被删除
5#
发表于 2015-2-6 16:08:57 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-8 19:38:29 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
简单生活 该用户已被删除
7#
发表于 2015-2-15 20:40:18 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
飘灵儿 该用户已被删除
8#
发表于 2015-3-4 13:15:40 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
海妖 该用户已被删除
9#
发表于 2015-3-7 21:11:04 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
精灵巫婆 该用户已被删除
10#
发表于 2015-3-10 19:11:00 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
蒙在股里 该用户已被删除
11#
发表于 2015-3-14 15:43:25 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
再见西城 该用户已被删除
12#
发表于 2015-3-17 20:10:34 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
乐观 该用户已被删除
13#
发表于 2015-3-24 23:43:22 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
admin 该用户已被删除
14#
发表于 2015-3-30 08:36:35 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
若相依 该用户已被删除
15#
发表于 2015-4-1 00:08:23 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
因胸联盟 该用户已被删除
16#
发表于 2015-4-22 09:54:40 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
小妖女 该用户已被删除
17#
发表于 2015-5-1 20:09:15 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
老尸 该用户已被删除
18#
 楼主| 发表于 2015-6-7 09:16:58 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
爱飞 该用户已被删除
19#
发表于 2015-6-10 06:22:59 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
兰色精灵 该用户已被删除
20#
发表于 2015-6-20 05:46:28 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-14 05:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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