当方法具有相同名称但签名不同时,是否重写了方法?

joy*_*joy 3 java methods overriding

public class Superclass {

   void method(Object a){
   }
}


public class Subclass extends Superclass {

    void method(String a){
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的类中,Superclass中的方法具有Object类型的参数,而Subclass具有String类型的参数.String是Object的子类.我的问题是,在这种情况下方法是否覆盖?

cod*_*Man 7

不,它的方法重载.因为它是覆盖超类方法和子类方法的方法签名的方法应该是相同的.浏览 这篇博文,了解这两者及其细节差异

  • 值得注意的是,您可以使用更具体的返回类型覆盖.当然,泛型也使这一切变得有趣. (2认同)
  • @JonSkeet Java 6中存在一个错误,它允许使用泛型通过返回类型进行重载.http://vanillajava.blogspot.co.uk/2011/02/with-generics-return-type-is-part-of.html (2认同)