多态到底有什么作用?

解决方案 »

  1.   

    List list = new ArrayList();
     多态
      

  2.   

    interface I{
    }
    class A implements I{
    }
    class B implements I{
    }
    class Test{
      public static void method(I i){
      }
    }
    这里用多态可以少写很多代码
    要不你这个方法得写好多分别对应不同的参数类型
      

  3.   

    说一个我搭框架时进行二次封装的例子吧:
        我需要获取一个DTO的主键,我并不知道具体是哪一张表的DTO,我写的需要满足所有的实体类,我可以用Object去接所有传入的DTO对象,再用反射去取主键的值,可每张表的主键字段名还不一样,这样调用者还要再传一个参数,告诉我哪一个字段才是主键,同时,反射的性能肯定是不如直接用get方法的
        这时我可以用一个BaseDTO接口来代替Object类型接传入的参数,同时我在BaseDTO中加入一个获取主键值的方法,所有别的DTO都必须实现这个接口,当然,也同时必须实现获取主键这个方法,实现的时候只要把确定为主键字段的值返回,这样我再去获取主键值就非常简单了,直接调用BaseDTO中的获取主键值方法,但实际上我调用的是调用者调用时所传入的DTO的方法,这就是多态,好处不仅限于此,可以随着经验的丰富,再琢磨