zoukankan      html  css  js  c++  java
  • 多态的向上转型和向下转型 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

     

  • 相关阅读:
    JQ购物车+1-1
    [转载]DATEDIFF() 函数返回两个日期之间的时间
    [转载]js获取当前页面url网址信息
    [转载]Request获取文件路径
    JQ页面跳转
    [转载]Sql Server 日期格式化函数
    [转载]jQuery的attr()与prop()的区别
    [转载]获取验证码60秒倒计时
    [转载]JQ键盘事件
    [转载]SQL常用语句
  • 原文地址:https://www.cnblogs.com/qducn/p/6146147.html
Copyright © 2011-2022 走看看