第2个回答 2008-01-28
覆盖只能发生在有父子关系的时候,也就是子类在可以访问父类方法的情况下,可以对父类的方法进行重写,要求:
1.方法名完全相同
2.参数列表完全相同
3.返回类型可以为原来返回类型的子类,这种叫做协变式返回,除了这种情况外,不能修改返回类型.
重载通常发生在同一个类中,但同样可以发生在继承关系中,也就是子类照样能重载父类的方法(有同样的重载要求),要求:
1.方法名完全相同
2.参数列表必须改变,也就是重载的方法参数类型、序顺必须不能和原来的一样。
3.返回类型没有要求,可以有或没有返回类型。
综上,两者的相同是:
方法名相同
不同点是:
1.覆盖发生在继承关系中,重载发生在同一类或继承关系中。
2.方法重载必须对参数做改变,而方法重写没有要求。
3.重载对返回类型没有要求,而重写必须返回原来方法的类型或该类型的子类。