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

     

  • 相关阅读:
    设计模式(十七)Observer模式
    设计模式(十六)Mediator模式
    设计模式(十五)Facade模式
    设计模式(十四)Chain of Responsibility模式
    设计模式(十三)Visitor模式
    设计模式(十一)Composite模式
    设计模式(十二)Decorator模式
    设计模式(十)Strategy模式
    python 函数编程
    python import hashllb
  • 原文地址:https://www.cnblogs.com/qducn/p/6146147.html
Copyright © 2011-2022 走看看