老尸 发表于 2015-1-18 11:36:21

了解下JAVA的在java中发生准确的举动

再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?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(),由于前期绑定已参与(多形性)。
上面这个例子从一个略微分歧的角度申明了成绩:

//:Shapes.java
//PolymorphisminJava

classShape{
voiddraw(){}
voiderase(){}
}

classCircleextendsShape{
voiddraw(){
System.out.println("Circle.draw()");
}
voiderase(){
System.out.println("Circle.erase()");
}
}

classSquareextendsShape{
voiddraw(){
System.out.println("Square.draw()");
}
voiderase(){
System.out.println("Square.erase()");
}
}

classTriangleextendsShape{
voiddraw(){
System.out.println("Triangle.draw()");
}
voiderase(){
System.out.println("Triangle.erase()");
}
}

publicclassShapes{
publicstaticShaperandShape(){
switch((int)(Math.random()*3)){
default://Toquietthecompiler
case0:returnnewCircle();
case1:returnnewSquare();
case2:returnnewTriangle();
}
}
publicstaticvoidmain(String[]args){
Shape[]s=newShape;
//Fillupthearraywithshapes:
for(inti=0;i<s.length;i++)
s=randShape();
//Makepolymorphicmethodcalls:
for(inti=0;i<s.length;i++)
s.draw();
}
}///:~针对从Shape衍生出来的一切工具,Shape创建了一个通用接口——也就是说,一切(多少)外形都能够刻画和删除。衍生类掩盖了这些界说,为每种特别范例的多少外形都供应了举世无双的举动。
在主类Shapes里,包括了一个static办法,名为randShape()。它的感化是在每次挪用它时为某个随机选择的Shape对象天生一个句柄。请注重上溯外型是在每一个return语句里产生的。这个语句获得指向一个Circle,Square大概Triangle的句柄,并将其作为前往范例Shape发给办法。以是不管甚么时分挪用这个办法,就相对没时机懂得它的详细范例究竟是甚么,由于一定会取得一个纯真的Shape句柄。
main()包括了Shape句柄的一个数组,个中的数据经由过程对randShape()的挪用填进。在这个时分,我们晓得本人具有Shape,但不知除此以外任何详细的情形(编译器一样不知)。但是,当我们在这个数组里步进,并为每一个元素挪用draw()的时分,与各种型有关的准确举动会把戏般地产生,就象上面这个输入示例展现的那样:
Circle.draw()
Triangle.draw()
Circle.draw()
Circle.draw()
Circle.draw()
Square.draw()
Triangle.draw()
Square.draw()
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 程序的运行效率。

只想知道 发表于 2015-2-6 16:08:57

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

冷月葬花魂 发表于 2015-2-8 19:38:29

是一种语言,用以产生「小应用程序(Applet(s))

简单生活 发表于 2015-2-15 20:40:18

Java是一种计算机编程语言,拥有跨平台、面向对java

飘灵儿 发表于 2015-3-4 13:15:40

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

海妖 发表于 2015-3-7 21:11:04

是一种将安全性(Security)列为第一优先考虑的语言

精灵巫婆 发表于 2015-3-10 19:11:00

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

蒙在股里 发表于 2015-3-14 15:43:25

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

再见西城 发表于 2015-3-17 20:10:34

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

乐观 发表于 2015-3-24 23:43:22

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

admin 发表于 2015-3-30 08:36:35

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

若相依 发表于 2015-4-1 00:08:23

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

因胸联盟 发表于 2015-4-22 09:54:40

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

小妖女 发表于 2015-5-1 20:09:15

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

老尸 发表于 2015-6-7 09:16:58

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

爱飞 发表于 2015-6-10 06:22:59

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

兰色精灵 发表于 2015-6-20 05:46:28

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
页: [1]
查看完整版本: 了解下JAVA的在java中发生准确的举动