java重载和重写
重载(Overload)
- 重载是在一个类中定义多个方法名相同的方法,那系统如何知道要调用哪一个呢?系统通过参数的数量不同或数量相同而类型和次序不同去寻找要调用的方法,所以参数必须不一样;
- 参数必须修改,返回类型,异常,访问都可以修改;
从图可以看出在同一个类中方法名称是一样的,而调用方法也都是用了同一个名称,但是参数都是不一样的(参数个数或类型不一样);
重写(Override)
- 重写是子类对父类的方法进行重新编写;
- 参数列表和返回类型都不能改,异常可以减少或者删除,访问可以降低限制;
- 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法;
- 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法;
- 因为重写是建立在继承之上,如果不能继承,则不能重写;
- 静态方法(static)和final不能被重写;
参数列表和返回类型都不能改,否则就不是重写,而是子类写的新方法;
在方法MayOne中有一个关键字super (子类中调用父类的被重写方法) ,就像在子类中写一个和父类一模一样的方法;
两者区别点(转载):
最后说一下,该文章只是说了一下两者的写,一些注意事项和区别点,如果要了解详细可以到