日期:2011-03-22 16:17:00 来源:本站整理
java覆盖与过载[Java编程]
本文“java覆盖与过载[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
目前让我们用差别的目光来看看本章的头一个例子.在下面这个程序中,办法play()的接口会在被覆盖的历程中发生改变.这意味着我们实际并没有“覆盖”办法,而是使其“过载”.编译器答应我们对办法举行过载处理,使其不报告出错.但这种行为大概并非我们所但愿的.下面是这个例子:
这里还向大家引入了另一个易于混合的概念.在InstrumentX中,play()办法采取了一个int(整数)数值,它的标识符是NoteX.也就是说,即便NoteX是一个类名,也可以把它作为一个标识符利用,编译器不会报告出错.但在WindX中,play()采取一个NoteX句柄,它有一个标识符n.即便我们利用“play(NoteX NoteX)”,编译器也不会报告错误.这样一来,看起来就象是程序员有意覆盖play()的功效,但对办法的范例定义却略微有些不切当.但是,编译器此时假定的是程序员有意举行“过载”,而非“覆盖”.请细心领会这两个术语的辨别.“过载”是指同一样东西在差别的地方具有多种含义;而“覆盖”是指它随时随地都只有一种含义,只是原先的含义完好被后来的含义代替了.请注意假如服从尺度的Java命名标准,自变量标识符就应当是noteX,这样可把它与类名区脱离.//: WindError.java // Accidentally changing the interface class NoteX { public static final int MIDDLE_C = 0, C_SHARP = 1, C_FLAT = 2; } class InstrumentX { public void play(int NoteX) { System.out.println("InstrumentX.play()"); } } class WindX extends InstrumentX { // OOPS! Changes the method interface: public void play(NoteX n) { System.out.println("WindX.play(NoteX n)"); } } public class WindError { public static void tune(InstrumentX i) { // ... i.play(NoteX.MIDDLE_C); } public static void main(String[] args) { WindX flute = new WindX(); tune(flute); // Not the desired behavior! } } ///:~
在tune中,“InstrumentX i”会发出play()消息,同时将某个NoteX成员作为自变量利用(MIDDLE_C).由于NoteX包含了int定义,过载的play()办法的int版本会得到调用.同时由于它还没有被“覆盖”,所以会利用底子类版本.
输出是:
InstrumentX.play()
以上是“java覆盖与过载[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:java的抽象类和办法
- ·下一篇文章:java的扩大性
- ·中查找“java覆盖与过载”更多相关内容
- ·中查找“java覆盖与过载”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论