JAVA教程之JAVA中几个易搅浑关头词的了解
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。举动标准了你能对对象收回的哀求。你的CLASS,也就是对象,也就是MM,你把她计划出来了,并且你很BT,只给她计划了两个举动:爱我()和MAKE爱与我()。那末她便不成能承受别的客户端class(某个帅哥?)的哀求,假如在某个class里,你写成了MM.爱F4(),那末编译器就会堕落。你天经地义把MM的属性设成美,你不但愿他人来改动这个现实,那末,你就要把这个属性界说为private,如许MM便不会在第二天醒来成为传说中的KL。这在第一章里题目为:被埋没的实行细节。一个属性,有四种润色符,public,private,protected,空(默许,friendly)。分离代表的意义是任何对象能够会见,本对象外部能够会见,本对象(class)的承继者能够会见,统一个包(package)的别的对象能够会见。
我们老是想尽量地让本人的代码变的简便,这便必要反复使用完成码。JAVA供应了这类体例,其路子有两种:组合和承继,假定有一个类为A,A有一个举动doSomething(),另有一个类B,不也想dosomething,那末你能够在B里发生一个办法doSomethingToo(A.doSomething();)。这叫做组合。承继是别的一种办法,你能够间接用关头词extends,让B承继自A,那末你不必特别分外表达,B在外界看来也是有doSomething的才能的。那末我们要问,我们甚么时分要组合,甚么时分用承继呢?BRUCE讲,当BisaA的时分我们用承继。这不太好了解,我们再举个MM的例子。MM具有用饭(eatYou(进食;消化))的举动,MM衍生开来有好色的MM、爱打屁的MM等,但她们都是MM,也就是isa的干系,这个时分你要计划好色的MM的时分就用承继,用extends。而GG不是MM,可是GGislikeaMM,由于GG也能够用饭。这个时分我们就不必再往写eatYou()这个办法了,间接在GG这个类里写eatYou(MM.eatYou();)那末,GG也具有了进食、消化的功效。实在我们要经常用到组合,在程序里,用承继的中央是对照少的。
在承继傍边,有两个特别举动必要我们存眷:覆写(overriding)和重载(overloading)。如今你只需记着:假如baseclass和deriveclass的某个办法称号不异,引数不异,则为覆写(overriding),称号不异,引数不异,则为重载(overloading)。
面向对象一个明显的长处就是多形(多态)性。我原本是不想在这第一部分写代码的,可是仿佛这个成绩用言语表达不敷直不雅,以是就写了个最复杂的能申明多形性的成绩。看代码先。。。
//Love.java
classMM{
publicvoidtoSeeGG(){
System.out.println("xxx");
}
}
classHaoseMMextendsMM{
publicvoidtoSeeGG(){
System.out.println("勾引GG!!!");
}
}
classBenfenMMextendsMM{
publicvoidtoSeeGG(){
System.out.println("好羞怯哦....");
}
}
publicclassLove{
publicstaticvoidloveGG(MMi){
i.toSeeGG();
}
publicstaticvoidmain(String[]args){
MMmm1=newHaoseMM();
MMmm2=newBenfenMM();
loveGG(mm1);
loveGG(mm2);
}
}
该代码运转的了局是:
勾引GG!!!
好羞怯哦....
我们看到由MM衍生出来有好色MM(HaoseMM),天职MM(BenMM),MM们都大概会看到帅哥,可是好色MM和天职MM看帅哥的眼神是纷歧样的,如程序中界说。在爱(Love)这个类里,我们界说一个办法loveGG,我们给它传送一个参数,是基类(baseclass)MM,然后toSeeGG()。经由过程本文最开首的描诉,我们晓得,HaoseMM和BenMM与MM的干系是isa的干系,以是我们在用到loveGG(mm1)和loveGG(mm2)时分编译器不会堕落。我们看到,程序主动各自实行了haoseMM和BenfenMM的toSeeGG(),而不是打印出“xxx”。这就是多形性。之以是会云云奇妙,是由于JAVA运转时情况供应了静态绑定手艺。静态绑定会让你发生的MM在JAVA运转时情况里依照你的唆使分离作出举动。OK,我们不必要晓得静态绑定是怎样运做的,我们只需晓得这是甚么,由于我们还在第一章。上溯外型(upcasting)这个观点也在这里被提出来了。在loveGG(MMi)这个办法里,办法承受的是MM,但是loveGG也承受HaoseMM和BenfenMM,这个特征就叫上溯外型。
我们在下面的程序中看到了一句没有效的代码,就是在MM类里的System.out.println("xxx");。没有人体贴基类MM是怎样看帅哥,由于它只是一个模版,以是我们爽性就不要这句代码,并且我们连{}也不要了,间接改写这个办法为publicabstractvoidtoSeeGG();,那末这个办法称做笼统办法(abstractmethod)。基类MM对我们来讲没有完成的需要,因而我们把classMM{...}改写为abstractclassMM{...},那末这个类叫做笼统类(abstractclass)。我们不由要问,那末笼统类能不克不及含有非笼统的函数呢。答曰:能够。可是这在实践中没有甚么用途,独一用到的中央是:1,main()函数,用来测试你的类;2,测验中。那末我们还要问,子类能够不覆写父类中笼统办法行不可?答曰:假如子类也是abstract,那末能够,不然不可。
比笼统类做的更完全的是接口(注重,这里的接口是JAVA中真正意义的接口,非上文一入手下手的接口,也既举动)。接口被计划出来的目标就是要让你承继的。等………,这是第一章,只让人人晓得一些观点就好了,下面我们说的太多了。
BRUCE是个完全的NN大家,我们接上去看到他把JAVA的低效力成绩说的是那末的天经地义,以致于我们看完后不由自主也要说:
恩,JAVA就应当如许做,让C++见鬼往吧。面向对象,因而一切东东都是对象,有对象便有对象的发生和扑灭。程序运转的时分,对象发生在内存中。内存分派有三种战略,分离是静态的,栈式的(stack),和堆式的(heap)。C++利用前两种战略,JAVA仅利用后者。二者有甚么区分呢?喜好追本溯源的伴侣请参考本站JSP/JAVA分坛的“栈存储(stack)和堆存储(heap)的区分”,我们只需记着,后者在内存中的寻址要花更长的工夫,因而JAVA的效力低。可是JAVA供应了依据heap特性发生的渣滓接纳机制。渣滓接纳机制完成如许的义务,当你的对象不在利用的时分它会主动发觉并没落。你不必再忧虑产生内存保守了。而这是每一个C++程序员最头疼的事变。以是,你选择吧,是要平安仍是要效力。
实在第一章接上去讲的工具关于初学者来讲已其实不主要了,以上你的常识你分明了以后,在接上去的进修上你会轻松良多。我倡议你不要看的那末明晰了。我想我们应当入手下手,即刻进进第二章了。
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合。 Java 编程语言的风格十分接近C、C++语言。 是一种语言,用以产生「小应用程序(Applet(s)) 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 是一种突破用户端机器环境和CPU Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 Java 编程语言的风格十分接近C、C++语言。
页:
[1]