java的上溯造型
当前位置:以往代写 > JAVA 教程 >java的上溯造型
2019-06-14

java的上溯造型

java的上溯造型

担任最值得留意的处所就是它没有为新类提供要领。担任是对新类和基本类之间的干系的一种表达。可这样总结该干系:“新类属于现有类的一种范例”。
这种表达并不只仅是对担任的一种形象化表明,担任是直接由语言提供支持的。作为一个例子,各人可思量一个名为Instrument的基本类,它用于暗示乐器;另一个衍生类叫作Wind。由于担任意味着基本类的所有要领亦可在衍生出来的类中利用,所以我们发给基本类的任何动静亦可发给衍生类。若Instrument类有一个play()要领,则Wind设备也会有这个要领。这意味着我们能必定地认为一个Wind工具也是Instrument的一种范例。下面这个例子展现出编译器如何提供对这一观念的支持:

 

//: Wind.java
// Inheritance & upcasting
import java.util.*;

class Instrument {
  public void play() {}
  static void tune(Instrument i) {
    // ...
    i.play();
  }
}

// Wind objects are instruments
// because they have the same interface:
class Wind extends Instrument {
  public static void main(String[] args) {
    Wind flute = new Wind();
    Instrument.tune(flute); // Upcasting
  }
} ///:~

这个例子中最有趣的无疑是tune()要领,它能接管一个Instrument句柄。但在Wind.main()中,tune()要领是通过为其赋予一个Wind句柄来挪用的。由于Java对范例查抄出格严格,所以各人大概会感想很奇怪,为什么吸收一种范例的要领也能吸收另一种范例呢?可是,我们必然要认识到一个Wind工具也是一个Instrument工具。并且对付不在Wind中的一个Instrument(乐器),没有要领可以由tune()挪用。在tune()中,代码合用于Instrument以及从Instrument衍生出来的任何对象。在这里,我们将从一个Wind句柄转换成一个Instrument句柄的行为叫作“上溯造型”。

    关键字:

在线提交作业