|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net网页编程里有这些工具吗?要简单多少?。
不管分解仍是承继,都同意我们将子对象置于本人的新类中。人人也许会奇异二者间的差别,和究竟该怎样选择。
假如想使用新类外部一个现有类的特征,而不想利用它的接口,一般应选择分解。也就是说,我们可嵌进一个对象,使本人能用它完成新类的特征。但新类的用户会看到我们已界说的接口,而不是来自嵌进对象的接口。思索到这类效果,我们需在新类里嵌进现有类的private对象。
有些时分,我们想让类用户间接会见新类的分解。也就是说,必要将成员对象的属性变成public。成员对象会将本身埋没起来,以是这是一种平安的做法。并且在用户晓得我们筹办分解一系列组件时,接口就更简单了解。car(汽车)对象即是一个很好的例子:- //:Car.java
- //Compositionwithpublicobjects
- classEngine{
- publicvoidstart(){}
- publicvoidrev(){}
- publicvoidstop(){}
- }
- classWheel{
- publicvoidinflate(intpsi){}
- }
- classWindow{
- publicvoidrollup(){}
- publicvoidrolldown(){}
- }
- classDoor{
- publicWindowwindow=newWindow();
- publicvoidopen(){}
- publicvoidclose(){}
- }
- publicclassCar{
- publicEngineengine=newEngine();
- publicWheel[]wheel=newWheel[4];
- publicDoorleft=newDoor(),
- right=newDoor();//2-door
- Car(){
- for(inti=0;i<4;i++)
- wheel[i]=newWheel();
- }
- publicstaticvoidmain(String[]args){
- Carcar=newCar();
- car.left.window.rollup();
- car.wheel[0].inflate(72);
- }
- }///:~
复制代码
因为汽车的拆卸是妨碍剖析时必要思索的一项要素(并不是只是基本计划复杂的一部分),以是有助于客户程序员了解怎样利用类,并且类创立者的编程庞大水平也会年夜幅度下降。
如选择承继,就必要获得一个现成的类,并制造它的一个特别版本。一般,这意味着我们筹办利用一个惯例用处的类,并依据特定的需求对其举行定制。只需略加设想,就晓得本人不克不及用一个车辆对象来分解一辆汽车——汽车其实不“包括”车辆;相反,它“属于”车辆的一品种别。“属于”干系是用承继来表达的,而“包括”干系是用分解来表达的。
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。 |
|