问题一:“重载”的时候,方法的返回类型是否一定要相同?问题二:“重写”的时候,方法的返回类型是否一定要相同?我看了网上有的人对这两个概念的分析,自己又写了类去验证,可是还是不能确定,希望有知道的回复一下,谢谢。

解决方案 »

  1.   

    问题一:“重载”的时候,方法的返回类型是否一定要相同? 
    ------
    不一定要相同。要注意的是:java不允许参数都相同仅返回值不同的重载。问题二:“重写”的时候,方法的返回类型是否一定要相同? 
    ------
    重写,也就是覆盖,方法的参数以及返回值必须相同。
      

  2.   

    1楼说的“协变式返回(如返回类的子类)”应该是不允许的。1楼自己实际试过么?
    我最近写的代码还打算覆盖 Object.clone(), 不返回 Object,而是返回当前类类型,结果不允许。
      

  3.   

    1楼说的“协变式返回(如返回类的子类)”应该是不允许的。1楼自己实际试过么? 
    我最近写的代码还打算覆盖 Object.clone(), 不返回 Object,而是返回当前类类型,结果不允许。===================你确定????
    做梦了把协变也只不过是编译器加入bridge方法
      

  4.   

    我说的没错,你说的那种所谓“协变式返回”是jdk5才引入的概念,老版本的java是不允许的。你自己可以去试试。
      

  5.   

    一楼回答的是正解 JAVA是支持可以协变式返回的
      

  6.   

    重载是实现java多态的一种方式,通过你传入参数数量、类型、顺序的不同,而进行不同的处理,返回类型并不强制要一致,跟你需求有关。换句话说,你想怎么做就怎么做,但方法名必须保持一致,不然就不叫方法的重载了。覆写是指子类在继承父类时发生,当子类的方法与父类方法名、返回类型、参数个数、数量、顺序完全一致的,该方法将屏蔽掉父类的方法,你可以通过super关键字来调用父类的方法。