一、方法重写
概念:
重写是在子类中把父类允许访问的方法重新写一遍,返回值类型和形参都不会发生改变,但要注意子类函数的访问权限不能比父类的更严格。
例如:
public class Animal {
public void eat(){
System.out.println("动物吃东西");
}
public static void main(String[] args) {
Cat cat = new Cat();
cat.eat();
}
}
class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
注意:
重写发生在子类和父类之间。
参数列表必须完全与被重写方法的相同。
返回类型必须完全与被重写方法的返回类型相同。
声明为final的方法不能被重写。
声明为static的方法不能被重写,但是能够被再次声明。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。
构造方法不能被重写。
不能继承的方法不能被重写。
二、方法重载
概念:
重载是在一个类里面同名的方法拥有不同的参数列表(参数类型不同、参数个数不同、参数顺序不同),同时重载对返回类型没有要求,可以相同也可以不同,我们不能通过返回类型来判断重载。
例如:
public static void main(String[] args) {
Animal animal = new Animal();
animal.eat();
animal.eat("猫");
}
public void eat(){
System.out.println("动物吃食物");
}
public void eat(String name){
System.out.println(name+"吃鱼");
}
注意:
被重载的方法可以改变返回类型。
被重载的方法可以改变访问修饰符。
被重载的方法可以声明新的或更广的检查异常。
无法以返回型别作为重载函数的区分标准。