JAVA网页编程之《Java编程头脑》(第二版)第6章:反复运...
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。编程|反复Java有着世人惊叹的功效,程序代码的反复使用即是个中之一.可是,假如想取得反动性的改动,你得远远超出"复制程序代码,然后改动之"的新式程序代码的复用处径:组合(Composition)和承继(Inheritance)toString():每一个非基础种别的对象都具有toString(),当编译器但愿的到一个String,而你手上却只要那些对象的情形下,这个函数便会被唤起.
测试tips:"为每一个class供应main(),不论class是否是public",能够在命令行启动各个main().如许可使每一个class单位测试更加简单.并且在完成单位测试以后,不必删除main();你能够将它留下以待往后再加测试.
super关头字:你大概会在derivedclass的函数中(好比是a())挪用baseclass中的某个函数(一般也是a()),这个时分你固然不克不及间接挪用,由于不异的标记符会形成递回.为懂得决这个成绩,供应了关头字super。他代表超类(superclass),以是你能够云云挪用:super.a();
baseclass的初始化:挪用baseclass机关函数。Java编译器会主动在derivedclass机关函数中拔出对baseclass默许机关函数的挪用举措。但假如你的class不具有default机关函数,大概你想挪用带有引数的baseclass机关函数,你便得使用关头字super,并搭配得当的引数列,分明的写出挪用举措,好比说super(i);(注重这和挪用一样平常成员函数的语法有所分歧哦)。别的,对baseclass机关函数的挪用,必需是derivedclass机关函数所做的第一件事(假如你做错了,编译器会提示你)。
捕获base机关函数的非常:下面的谁人"第一件事"的限定也使得derivedclass机关函数没法捕获一切来自baseclass的非常。偶然候这听不便利的。
坚持得当的清算:因为Java中不存在析构函数可是偶然候我们但愿在对象扑灭的时分做些清算举措,这个时分要把代码放到final块中
称号掩蔽(Namehiding):函数不管被界说与某层class或其baseclass,Java重载(overloading)机制都能够一般运作。固然,利用"和baseclass千篇一律的标志(signature)及前往种别"来复写(override)同名函数,使在平常不外的事变了,这个也使多态的基本。
关头字final:基础意义是"这是不克不及被改动的"。基于计划和效力我们大概但愿制止改动。这两个来由非常分歧,大概够形成对关头字final的误用。可使用final的三个中央:data,method,class。
finaldata:用来告知编译器某块数据是"流动稳定的".用途以下:
1.利用不改动的"编译器常量(compile-timeconstant)".
2.能够在实行期(run-time)被初始化,而你却不想在改动它。
假如某一数据实时static也是final,他们它具有一块没法改动的存储空间。
Blankfinals:Java同意发生"留白的finals",即同意我们将数据成员声名为final同时能够不给初值,任何情形下,blankfinals必需在利用之行进行初始化,编译器会强迫包管。不外blankfinals比final供应了更多的弹性。由于云云class内的final数据成员即可以在每一个对象中有所分歧。
Finalarguments:将引数声名为final,意味着你没法在此函数中令该引数(一个reference)改指他处。
当基础范例引数声名为final时,暗示你能够读取引数所代表的值,但没法改动该值。
finalmethod:利用它的缘故原由有二:
1.锁住这个函数,包管不被derivedclass复写(override),这是种计划上的思索。
2.同意编译器(但此举措纷歧定发生,编译器此时会有个判别举措)将一切对此函数的挪用举措转化为inline(内联)挪用。这是种效力上的思索。
因为以上两点同时会起感化,一切偶然候你必需衡量一下值不值得用finalmethod:好比说某个函数很小你想把它转化为内联函数可是此时它会完整得到被override的大概性。以是最好是在某个函数镇的体积很小大概你真的不但愿他被复写时,才将他声名为final。
class中的一切private函数天然而然的会是final,由于他们没法被别类取用,更没法被复写。这申明了一点很主要的性子:覆写(overriding)只可以产生在"函数属于baseclass接口"时。
finalclasses:缘故原由是你不但愿它被承继(要末你是处于保密性思索要末你是出于计划上的思索)
请注重,不管class是不是为final,数据成员data都能够大概为final,大概不为final.
但finalclass中的一切函数也都天然是final的了,由于他们不成能被覆写。
--------------------------------------------------------------------------------
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱. 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种使网页(Web Page)产生生动活泼画面的语言 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 是一种使用者不需花费很多时间学习的语言 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 Java 编程语言的风格十分接近C、C++语言。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
页:
[1]