码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-12-08 20:44:40      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:实例   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

 

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

标签:实例   extend   void   img   main   err   工具   pre   splay   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!