1.重载(Overload)与重写(Override)的概念:
重载:重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数列表却不相同,方法体也不相同,最常见的重载就是类的构造方法(也可以说,构造器是强制重载方法名的一个主要的原因)。
重写:重写就是子类的方法覆盖父类的方法,要求子类方法名与参数列表都与父类相同。
2.如何判断两个及两个以上的方法是否重载:
重载的判断取决于传入的参数列表:
(1).参数类型不同
(2).参数顺序不同
(3).参数个数不同
注意:不能根据方法的返回值类型来判断是否重载,例如:
public int A(int i);
public double(int i);
这两个方法不能构成重载。
3.关于重写:
重写发生在父类与子类之间。当子类覆盖了父类中的方法时,子类对象则无法再访问父类中被覆盖的方法,如果子类对象想要调用父类中的方法,则需使用super关键字 。但是需要注意的是:静态方法可以被子类继承,但是不能被重写。如果父类中有一个静态的方法,子类也有一个与父类名,参数类型,参数个数都一样的方法,并也用static修饰,子类会把原方法隐藏掉,通俗讲就是父类的方法和子类的方法是两个没有关系的方法。只有普通方法的调用是可以多态的。除此之外,还需注意的一点是:覆盖方法和被覆盖方法要么都是实例方法,要么都是类方法。
总结(方法重写要遵循“两同两小一大”原则):
(1).两同:方法名相同,参数列表相同。
(2).两小:①子类返回值类型比父类方法更小或相等
②子类方法声明抛出的异常应比父类方法声明抛出的异常类更小或相等。
(3).一大:子类方法的访问权限硬币父类的访问权限更大或相等。
4.重载代码示例:
5.重写代码示例: