萌萌妈妈 发表于 2015-1-18 11:48:32

JAVA教程之《Java编程头脑》(第二版)第08章:接口...

一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。编程
我的条记



Interfaces&innerclasses为你的体系中的对象供应更加精致的构造与把持体例.

interface更胜于abstractclass,由于我们可以藉以撰写出"能够upcasting为多个baseclass"的class,从而到达C++多重承继的目标.

你能够在关头字interface之前加上关头字public(但只要当这个interface被界说与同名文件中才行),不然就成为"friendly",仅可被利用于统一个package以内.interface以内的一切methods城市被默许为public.因为interface不带任何完成详目,也就是说interface不与任何存储空间有联系关系,因而兼并多个interface是一件十拿九稳的事情,编译器不需如临年夜敌.以是在兼并多个接口时,C++所面对的成绩不会呈现于Java当中.明显我们应当只管思索利用interface而不是abstractclass.

发生常量群(groupingconstants)因为interface中的一切数据成员城市主动成为static和final,以是关于常量群的发生(就如C或C++中的enum一样),interface是个非常便当的工具.interface中的数据成员会主动成为public,以是无需分明标出.

接口兼并时的称号抵触(namecollision)成绩:当你完成多重接口是,大概会失落进一个小小的圈套.overriding,implementation,overloading一切使人不兴奋的混砸在一同.并且重载method没法仅靠returntype作为区分.以是此时你要出格当心。

嵌套的(nesting)interfaces:除完成privateinterface这个东东,真的另有用吗?书上说:"也许到场这些特征的最后来由只是为了语法上的分歧性,但我总以为,你晓得言语的某个特征以后,常常可以找到这个特征的用途。"

InnerClasses(内隐类)从计划下去说:innerclass的次要目标不该是埋没,由于Java已具有了极佳的埋没机制-friendlyclass。可是当你入手下手upcasting至baseclass特别是转型为interface时,就可以突显innerclass的优点:(tip:从某个"完成出interfaceI"的innerclass对象身上发生一个reference指向I,实质上和"向上转型至baseclass"是一样的),这是由于innerclass(也就是I的完成者)能够在接上去的情境中完整不被瞥见,并且不为任何人所用。这么一来我们就能够很便利的"埋没完成详目"。你所失掉的只是"指向baseclass或interface"的一个reference罢了。注重这里InnerClasses能够具有一样平常的(non-inner)class没法具有的性子:好比能够具有private和protected会见润色符。当声名为private时,暗示仅供outerclass会见,当声名为protected时,暗示能够被package内的任何class大概outerclass的承继者所利用。

位于methods和scopes以内的innerclasses怕怕~,下面提到的是innerclass最一般的用法,假如你必要,他还供应了一些隐晦的利用办法:你能够将innerclasses至于函数以内或乃至至于恣意程序范围(scopes)以内...你真的必要嘛?晕倒。

匿名(anonymous)innerclassestimetimeagain,iaskyou:真的必要吗?多写点代码会逝世啊!

与核心(outer)class的毗连干系innerclass另有一个明显的优点就是他能够会见核心对象的一切成员而无需增加任何润色词。别的innerclasses亦能会见enclosingclass的一切元素(这点与C++年夜不不异)。这是由于任何innerclass被发生的

时分,必需给它纪录一个reference,指向enclosingclass的某个特定对象(好比说outerclass),假如编译器找不到这个ref,就等着报错把。

staticinnerclasses(静态内隐类)和下面的innerclass相反,假如你不必要这个ref,那就static之吧!这意味着:1.发生其对象时,其实不必要同时存在一个enclosingclass对象.2.你没法在staticinnerclass对象中会见enclosingclass对象成员实践上,从另外一个角度来看,还存在第3点分歧:3.能够具有staticdata,staticfields,staticinnerclass.但是non-staticinnerclass不可.由此我们能够发明staticinnerclass和staticmethod类似了.4.能够把staticinnerclass放在interface内里--staticinnerclass只不外是被置于interface的定名空间中而已,使用这本性质,能够把main()放到某个接口中,用以撑持测试...

取用(referring)outerclass的对象.this.xxx假如你想在outerclass内里的static函数内里间接发生innerclass对象,必要先弄定一个outerclass的refp,然后p.new.由于我们说过innerclass发生的时分必需要有一个outerclassref传过去,不然会被以为毛病.固然关于staticinnerclass就不必了.

从多层嵌套class向外舒展触角不管innerclass被嵌套的条理有多深.其一切outerclasses的成员都可被它会见(思索NameSpace).

承继innerclasses:先吐血3升,真的有需要吗?难点在于谁人奥秘的ref必需被初始化.但derivedclass以内不存有可毗连的缺省对象.以是必要公用语法撑持:enclosingClassReference.super();

innerclasses可被复写吗?总算不必研讨了:作者已申明了,记着了局就能够:"实在没有甚么用途."

innerclass标记符(identifiers):$

总结:为何必要innerclasses?1.由innerclass完成interface能供应outerclass完成interface所不具有的功效:你能够下探完成详目.innerclass不受限于outerclass是不是已承继自某一完成类.也就是说,innerclasses练习上因为你承继多个non-interface.2.Closures(闭幕)和Callbacks(回调)3.Controlframeworks



我的成绩


文中提到的把含有main()的staticinnerclass放到interface顶用于测试较之之前的承继main()有何长处?


文中提到的把含有main()的staticinnerclass放到interface顶用于测试较之之前的承继main()有何长处?



文中提到的把含有main()的staticinnerclass放到interface顶用于测试较之之前的承继main()有何长处?

本来protected>=friendly?我土了。。

关于某些innerclass的内容,有用代价真的很年夜么?为了20%的利用大概性而往花失落80%的进修工夫,值得么?我以为良多工具都是为钻牛角尖的程序员筹办的,而我明显没盘算这么做,也没有谁人才能.

另有成绩太多了...今后渐渐提.多谢人人指教.

比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。

乐观 发表于 2015-1-21 15:22:05

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

兰色精灵 发表于 2015-1-21 15:22:05

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

小女巫 发表于 2015-1-30 20:24:48

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

再见西城 发表于 2015-2-1 10:30:47

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

萌萌妈妈 发表于 2015-2-1 16:25:53

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

若天明 发表于 2015-2-7 08:32:52

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

只想知道 发表于 2015-2-7 11:01:16

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

仓酷云 发表于 2015-2-21 08:48:23

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

冷月葬花魂 发表于 2015-3-6 20:01:25

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

山那边是海 发表于 2015-3-6 20:01:37

是一种为 Internet发展的计算机语言

愤怒的大鸟 发表于 2015-3-13 07:09:36

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

金色的骷髅 发表于 2015-3-20 16:17:00

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

老尸 发表于 2015-3-22 05:10:28

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

爱飞 发表于 2015-4-6 05:08:33

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

若相依 发表于 2015-4-6 21:53:04

是一种使网页(Web Page)产生生动活泼画面的语言

海妖 发表于 2015-4-12 16:34:19

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

灵魂腐蚀 发表于 2015-4-12 23:59:58

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

分手快乐 发表于 2015-4-16 10:01:09

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

活着的死人 发表于 2015-4-17 08:54:48

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
页: [1] 2
查看完整版本: JAVA教程之《Java编程头脑》(第二版)第08章:接口...