|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。
承继最值得注重的中央就是它没无为新类供应办法。承继是对新类和基本类之间的干系的一种表达。可如许总结该干系:“新类属于现有类的一品种型”。
这类表达其实不仅仅是对承继的一种抽象化注释,承继是间接由言语供应撑持的。作为一个例子,人人可思索一个名为Instrument的基本类,它用于暗示乐器;另外一个衍生类叫作Wind。因为承继意味着基本类的一切办法亦可在衍生出来的类中利用,以是我们发给基本类的任何动静亦可发给衍生类。若Instrument类有一个play()办法,则Wind设备也会有这个办法。这意味着我们能一定地以为一个Wind对象也是Instrument的一品种型。上面这个例子展现出编译器怎样供应对这一观点的撑持:
- //:Wind.java
- //Inheritance&upcasting
- importjava.util.*;
- classInstrument{
- publicvoidplay(){}
- staticvoidtune(Instrumenti){
- //...
- i.play();
- }
- }
- //Windobjectsareinstruments
- //becausetheyhavethesameinterface:
- classWindextendsInstrument{
- publicstaticvoidmain(String[]args){
- Windflute=newWind();
- Instrument.tune(flute);//Upcasting
- }
- }///:~
复制代码
这个例子中最风趣的无疑是tune()办法,它能承受一个Instrument句柄。但在Wind.main()中,tune()办法是经由过程为其付与一个Wind句柄来挪用的。因为Java对范例反省出格严厉,以是人人大概会感应很奇异,为何吸收一品种型的办法也能吸收另外一品种型呢?可是,我们必定要熟悉到一个Wind对象也是一个Instrument对象。并且关于不在Wind中的一个Instrument(乐器),没无方法能够由tune()挪用。在tune()中,代码合用于Instrument和从Instrument衍生出来的任何工具。在这里,我们将从一个Wind句柄转换成一个Instrument句柄的举动叫作“上溯外型”。
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试) |
|