首页 > 其他 > 详细

多态的向上转型和向下转型 2016.12.8

时间:2016-12-08 20:42:36      阅读:147      评论:0      收藏:0      [点我收藏+]

    我们都知道,方法的重写是导出类和基类的一种多态的表现,可以在实例化时将导出类向上转型为基类,但是这样的缺点是,向上转型只能实现基类中定义的方法,只不过在导出类中又将这些方法更加丰富了。

现实中,我们还需要在导出类中扩展基类中没有的方法,这就用到在实例化时向下转型才能实现导出类的扩展方法。

技术分享

 

下面举例说明:

 父类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

原文:http://www.cnblogs.com/qducn/p/6146147.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!