在学习向上转型的过程中,为了将其讲述清楚,让大家更好的理解,定义我们结合代码来讲解。
package lession04;
class Instrument{
public void play() {}
static void tune(Instrument i) {
i.play();
}
}
public class Wind extends Instrument{
public static void main(String[] args) {
// TODO Auto-generated method stub
Wind flute=new Wind();
Instrument.tune(flute);
}
}
此程序无结果输出
对向上转型的分析:我们可以在Wind类中看到,tune()方法被Instrument引用,更加有趣的是,传递给tune()的参数是一个Wind类的引用,我们说继承关系中,新类是基类的一种类型,那么我们就会认为wind对象也是一种Instrument对象。由此我们引出概念:在tune()中,程序代码可以对Instrument类和所有它的导出类起作用,这种将wind引用转化为Instrument引用的动作,称之为向上转型。
学习完之后好奇的读者又会有这样的疑问,为什么会成为向上转型?而不称为其他的呢?
这是由于我们是由导出类向基类的一个转型,在继承图当中表现为向上移动,因此称为向上转型。
当然也存在向下转型,在后续的学习中会为大家更新。
请大家批评指正,谢谢。