类的多态(三)

子类即是父类对象,这一点还需要再强调一下,尤其是在作为方法的参数时,特别好用,可以经常用。

以形状为例。

1、形状shape是一个接口,里面只有一个计算面积的抽象方法。

2、圆Circle是一个类,实现了shape接口,并有一个toString方法。

3、长方形Rectangle类也实现了shape接口,并有一个toString方法。

4、Test测试类,此类中有一个静态方法print,其参数为shape数组,其作用是输出shape数组中的每个对象。同时此类中有main方法,如下图所示:

注意,在本类中,print方法的方法体中其实就是在输出数出的每个对象,就是调用对象的toString方法。在main方法中定义了一个数组c,c中有两个元素,一个半径为3的圆,一个长和宽分别为1和2的长方形,可以通过print方法来输入这两个不同形状的面积,其运行结果如下:

如上的用法经常会看到,当然在方法中不一定是数组,也可以是对象。

如下图中,改变了Test类中的print方法,其参数为一个shape的对象。

在main函数中,=左侧均为父类对象,而右侧调用的均为子类实例,故所用的即为“子类对象即是父类对象”,不需要我们强制去转换,它自己会根据多态来调用相应的子类的方法。

其运行结果为:

(0)

相关推荐