问题RT 
这个问题也算困扰了我一段时间,先前看了《Thinking In Java》第三版,不知是我那本书有问题还是我理解有问题,书里把同类里同名不同参的方法和子类中与父类同名同参的方法统统叫“重载”(读音chongzai)我看了也晕头转向,刚刚在CSDN里逛,也发现了类似的问题(比如HttpServlet的子类重载了父类的doGet/doPost方法)
我目前的理解是这样的:
子类将父类同名同参的非private/static/final方法进行重新实现,我通常叫重写(override,读音chongxie)
同类中(或子类)同名不同参数列表的非private/static/final方法叫做重载(overload,读音chongzai)
再举个例子,System.out里的各种print(XXX xxx)方法算是重载
在HttpServlet的子类中写了public void doPost(HttpRequest request,HttpResponse response)这个方法,算是重写问题:上述我的说法和看法对么?看到这么多和自己理解不一样的,很怀疑是自己一直就没搞对。

解决方案 »

  1.   

    补充一下,
    重载属于静态绑定
    重写属于父子类中同一动作,不同实现,由jvm运行时决定使用哪种实现,属于动态绑定
    这个理解也对头么?
      

  2.   

    我也纳闷过:c#上override 也说成重载Java上我看见面试题上和 你理解的 一样。期待高手:
      

  3.   

    c# 把override说成重载而Java 我在面试题上看到的和lz理解的一样:纳闷,期待高手
      

  4.   

    子类在继承超类定义的同时,可以重新修改超类中原有定义的属性和方法,这种现象成为“覆盖”——override
    在一个类中,如果定义了两个同名不同变量的方法,这种现象称为“重载”——overloading
    这是标准的称谓。
      

  5.   

    重载: 
        是发生在一个类中,方法名相同,参数列表,类型,顺序 可以不同,返回类型也可以不同
        (但不把返回类型当成它是否重载的标准,是否重载就看参数列表就可以了)
    重写(建议在你要重写的方法的前一行写上@Override):
         就是子类对父类已存在方法的重新实现(方法名相同,参数列表,类型,顺序一定要相同)

        
      

  6.   

    楼主理解基本就是这样,重写也可以称为覆写,对于父类与子类来说。重载对于一个类来说。然后,如果刚学Java的话,不建议看《Think in Java》,感觉不适合入门,翻译比较拗口。推荐《Java SE6.0编程指南》灰色封面。
    仅供参考。