其实重写也叫做覆盖,与重载的区别到处都搜得到,这里简单带过
重载和重写的区别如下:
1.定义不同---重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。
2.范围不同---重载是在一个类中,重写是子类与父类之间的。
3.多态不同---重载是编译时的多态性,重写是运行时的多态性。
4.返回不同---重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。
5.参数不同---重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。
6.修饰不同---重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符。
其实今天主要是看重载参数的顺序是否影响,先看参数类型不同其顺序的影响
public void f2(int a, double b) {
// Method implementation
}
public void f2(double b, int a) {
// Method implementation
}
其编译并不会出现错误。但是重点来了,若是,参数类型一样,改变其顺序呢?
public void f1(int x,int y,int z) {
}
public void f1(int z,int y,int x) {
}
结果是:
编译错误,不能实现重载,所有,参数的类型,个数,顺序,的确能实现重载,但是还是以情况而定。
还有一个是int返回值,一个是void是否实现重载呢?
public int f1(int x,int y,float z) {
return 0;
}
public void f1(int x,int y,int z) {
}
答案是可以的。
以上便是本文章全部内容,也是有一次面试笔试题碰到了,突然想起就手动编写了一下,想起来应该是自己上课没听讲,忘记了这个细节。