zoukankan      html  css  js  c++  java
  • java interface和class中的协变

    协变

    Java中的协变是指,当发生继承时,子类中重写父类的方法时,可以返回父类方法返回类型的子类型。比如:

    class SuperClass{}
    class SubClass extends SuperClass{}
     
    class Test{
             @Override
             public  SuperClass make(){
             return  new SuperClass();
       }
    }
    class SubTest extends Test{
             @Override
             public  SubClass make(){
             return new SubClass();
      }
    }


    这种情况下,子类中的make()方法虽然和父类中的make方法返回值不同,但是依旧重写了父类的make(),这就是协变的情形

    Interface中的协变和class中的协变

    在java中接口和类的协变遵守相同的规则,但这种情形如果运用不当,则会造成混乱。父接口和子接口的返回值和函数签名应始终保持一致,否者会限制接口的灵活性。


    总结

    当接口的实现和接口的继承同时运用时,应该谨慎,接口应始终保持一致;而类作为接口的实现时,可以适当运用协变。

  • 相关阅读:
    Thread与Handler
    开始机顶盒的生涯
    解决布局被键盘顶的难题
    自动滚动的Textview
    2-解决粘包问题
    1-socket编程
    zipfile模块
    subprocess模块
    day31-异常处理
    collections模块
  • 原文地址:https://www.cnblogs.com/zhedan/p/7627214.html
Copyright © 2011-2022 走看看