}
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色{