问题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)这个方法,算是重写问题:上述我的说法和看法对么?看到这么多和自己理解不一样的,很怀疑是自己一直就没搞对。
这个问题也算困扰了我一段时间,先前看了《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)这个方法,算是重写问题:上述我的说法和看法对么?看到这么多和自己理解不一样的,很怀疑是自己一直就没搞对。
重载属于静态绑定
重写属于父子类中同一动作,不同实现,由jvm运行时决定使用哪种实现,属于动态绑定
这个理解也对头么?
在一个类中,如果定义了两个同名不同变量的方法,这种现象称为“重载”——overloading
这是标准的称谓。
是发生在一个类中,方法名相同,参数列表,类型,顺序 可以不同,返回类型也可以不同
(但不把返回类型当成它是否重载的标准,是否重载就看参数列表就可以了)
重写(建议在你要重写的方法的前一行写上@Override):
就是子类对父类已存在方法的重新实现(方法名相同,参数列表,类型,顺序一定要相同)
仅供参考。