向上转型是在函数定义是以基类作为形参,而在函数调用的时则采用基类的导出类作为实参。因为导出类继承了基类的接口。这种做法的好处是不必为每种类型的对象调用写一个函数,而只要为相同基类的子类定义同一个函数即可。
如下:
public class music
{
public static void tune(Instrument i)
{
i.play();
}
public static void main(String[] args)
{
Swing sw=new Swing();
Wind wn=new Wind();
tune(sw);
tune(wn);
}
}
class Instrument
{
public void play()
{
System.out.println("Instrument play");
}
}
class Swing extends Instrument
{
public void play()
{
System.out.println("Swing play");
}
}
class Wind extends Instrument
{
public void play()
{
System.out.println("Wind play");
}
}