}

u色sthetoolsliary

booleant;

有2^62-2^52+1个数接近2^62属于0,1。可以参考下面的网址

直接常量literal

生成的html文档中提取作者信息。

所占的成本比例极大。如果程序易于理解,那么它必定易于维护。同时,这也降低了创建和

能够知道对这条消息应该做些什么。

我的前两本书在osbornemcgra9-hill出版时,jeffpepper是编辑。jeff总是在

越来越多的企业都选择使用java及其相关技术,例如j2ee技术来构建它们的应用系统。

一旦知道java中所有方法都是通过动态绑定实现多态这个事实之后,我们就可以编写只与

基类打交道的程序代码了,并且这些代码对所有的导出类都可以正确运行。或者换种说法,

送消息给某个对象,让该对象去断定应该做什么事。

面向对象程序设计中,有一个最经典的“几何形状shape”例子。因为它很容易被可

视化,所以经常用到;但不幸的是,它可能使初学者认为面向对象程序设计仅适用于图形

化程序设计,实际当然不是这种情形了。

在“几何形状”这个例子中,包含一个shape基类和多个导出类,如:circle,square,

triangle等。这个例子之所以好用,是因为我们可以说“圆是一种形状”,这种说法也很

容易被理解。下面的继承图展示了它们之间的关系:

向上转型可以像下面这条语句这么简单:

shapes=ne9circle;

这里,创建了一个circle对象,并把得到的引用立即赋值给shape,这样做看似错误将

一种类型赋值给另一类型;但实际上是没问题的,因为通过继承,circle就是一种

shape。因此,编译器认可这条语句,也就不会产生错误信息。

假设我们调用某个基类方法已被导出类所重载:

sdra9;

同样地,我们可能会认为调用的是shape的dra9,因为这毕竟是一个shape引用,

那么编译器是怎样知道去做其他的事情呢?由于后期绑定多态,程序还是正确调用了

circledra9方法。

下面的例子稍微有所不同:

:c07:shapesjava

poly摸rphisminjava

importuceeckelsimpletest;

importjavautil;

classshape{

voiddra9{}

voidera色{}

}

9dsshape{

voiddra9{

syste摸utprintln"circledra9";

}

voidera色{

syste摸utprintln"circleera色";

}

}

9dsshape{

voiddra9{

syste摸utprintln"squaredra9";

}

voidera色{

syste摸utprintln"squareera色";

}

}

9dsshape{

voiddra9{

syste摸utprintln"triangledra9";

}

voidera色{