|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
唉!都是钱闹的1.Swing和.net网页编程开发比较------从市场份额看.net网页编程开发主要占据大部分的中小型和中型的的桌面开发,原因是它封装了很多工具
Scala其实不仅仅只给JVM引进了函数观点,它还为我们供应了一种关于面向对象言语计划的古代视角。在这一期的面向Java开辟职员的Scala指南中,TedNeward先容了Scala怎样使用特性(trait)使对象加倍复杂、更容易于构建。您将懂得到,特性与Java™接口和C++多重承继供应的传统极性既有类似的地方,也有分歧的地方。
出名迷信家、研讨学者艾萨克.牛顿爵士有如许一句名言:“假如说我看得比他人远一些,那是由于我站在伟人的肩膀上”。作为一位热情的汗青和政治学家,我想对这位巨人的名言略加修正:“假如说我看得比他人远一些,那是由于我站在汗青的肩膀上”。而这句话又表现出另外一位汗青学家GeorgeSantayana的名言:“健忘汗青势必重蹈复辙”。换句话说,假如我们不克不及回忆汗青,从已往的毛病(包含我们本人已往的履历)中吸收教导,就没无机会做出改善。
您大概会困惑,如许的哲学与Scala有甚么干系?承继就是我们要会商的内容之一。思索如许一个现实,Java言语的创立已是近20年前的事变,事先是“面向对象”的全盛时代。它计划用于仿照事先的支流言语C++,实验将利用这类言语的开辟职员吸引到Java平台下去。毫无疑问,在事先看来,如许的决议是明智并且需要的,但回忆一下,就会发明个中有些中央其实不像创立者假想的那样无益。
比方,在二十年前,关于Java言语的创立者来讲,反应C++作风的公有承继和多重承继是需要的。自那以后,很多Java开辟人入手下手为这些决议尔后悔。在这一期的Scala指南中,我回忆了Java言语中多重承继和公有承继的汗青。随后,您将看到Scala是如何改写了汗青,为一切人带来更年夜收益。
C++和Java言语中的承继
汗青是人们乐意纪录上去的现实。
—拿破仑.波拿巴
处置C++事情的人们可以回想起,公有承继是从基类中猎取举动的一种办法,不用显式地承受IS-A干系。将基类标志为“公有”同意派生类从该基类承继而来,而无需实践成为一个基类。但对本身的公有承继是未失掉普遍使用的特征之一。承继一个基类而没法将它向下或向上转换到基类的理念是不明智的。
另外一方面,多重承继常常被视为面向对象编程的必备要素。在建模交通工具的条理布局时,SeaPlane无疑必要承继Boat(利用其startEngine()和sail()办法)和Plane(利用其startEngine()和fly()办法)。SeaPlane既是Boat,也是Plane,岂非不是吗?
不管怎样,这是在C++壮盛时代的设法。在疾速转向Java言语时,我们以为多重承继与公有承继一样存在缺点。一切Java开辟职员城市告知您,SeaPlane应当承继Floatable和Flyable接口(也许还包含EnginePowered接口或基类)。承继接口意味着可以完成该类必要的一切办法,而不会碰到假造多重承继的困难(碰到这类困难时,要弄分明在挪用SeaPlane的startEngine()办法时应挪用哪一个基类的startEngine())。
遗憾的是,完全保持公有承继和多重承继会使我们在代码重用方面支付高贵的价值。Java开辟职员大概会因从假造多重承继中束缚出来而乐意,但价值是程序员常常要完成辛劳而易于堕落的事情。
回忆可重用举动
事变大抵能够分为大概永久不会产生的和不主要的。
—WilliamRalphInge
JavaBeans标准是Java平台的基本,它带来了浩瀚Java生态体系作为根据的POJO。我们都分明一点,Java代码中的属性由get()/set()对办理,如清单1所示:
清单1.PersonPOJO
//ThisisJava
publicclassPerson
{
privateStringlastName;
privateStringfirstName;
privateintage;
publicPerson(Stringfn,Stringln,inta)
{
lastName=ln;firstName=fn;age=a;
}
publicStringgetFirstName(){returnfirstName;}
publicvoidsetFirstName(Stringv){firstName=v;}
publicStringgetLastName(){returnlastName;}
publicvoidsetLastName(Stringv){lastName=v;}
publicintgetAge(){returnage;}
publicvoidsetAge(intv){age=v;}
}
<p>
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。 |
|