标签:实例 extend void img main err 工具 pre splay
我们都知道,方法的重写是导出类和基类的一种多态的表现,可以在实例化时将导出类向上转型为基类,但是这样的缺点是,向上转型只能实现基类中定义的方法,只不过在导出类中又将这些方法更加丰富了。
现实中,我们还需要在导出类中扩展基类中没有的方法,这就用到在实例化时向下转型才能实现导出类的扩展方法。
下面举例说明:
父类Cycle类:
package cn.qdu.transport; class Cycle { public void ride(){ System.out.println(" ride Cycle"); } public String wheels(String name,int i){ System.out.println(name+"这种交通工具有"+i+"个轮子"); return name; } }
子类Unicycle类:不仅重写了父类ride()方法,还扩展了新的功能,添加了新方法balance()
package cn.qdu.transport; class Unicycle extends Cycle {
@Override public void ride(){ System.out.println("ride unicycle."); } public void balance(){ System.out.println("Unicycle balance"); } }
主函数:
package cn.qdu.transport; public class Test { public static void main(String[] args) { Cycle unicycle=new Unicycle();//向上转型 cycle.ride(); cycle.wheels("cycle", 2); unicycle.ride(); unicycle.wheels("unicycle", 1); ((Unicycle)unicycle).balance();//向下转型
运行结果:
ride Cycle
cycle这种交通工具有2个轮子
ride unicycle.
unicycle这种交通工具有1个轮子
Unicycle balance
标签:实例 extend void img main err 工具 pre splay
原文地址:http://www.cnblogs.com/qducn/p/6146147.html