首页 > 代码库 > 多态的向上转型和向下转型 2016.12.8
多态的向上转型和向下转型 2016.12.8
我们都知道,方法的重写是导出类和基类的一种多态的表现,可以在实例化时将导出类向上转型为基类,但是这样的缺点是,向上转型只能实现基类中定义的方法,只不过在导出类中又将这些方法更加丰富了。
现实中,我们还需要在导出类中扩展基类中没有的方法,这就用到在实例化时向下转型才能实现导出类的扩展方法。
下面举例说明:
父类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
多态的向上转型和向下转型 2016.12.8
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。