方法重写概念( Method Overriding)
概念:方法重写主要用于修改方法体,也就是修改方法所实现的功能
方法重写具有以下规定:
- 子类方法的修饰符等级不得低于父类方法的修饰符等级
- 子类方法的返回值类型,参数类型以及参数个数必须与父类方法的完全相同
一句话说:方法重写除方法体以及方法的修饰符外必须完全相同!!!
这里顺便提一下方法的修饰符等级以及使用范围:
private(私有)<缺省值<protected(保护)<public(公开)
private:在本类中使用
默认:在本包中使用
protected:在其他包的子类中使用
public:在任何地方使用
方法重写实现示例
由于方法重写更多使用于抽象类中,这里就以抽象类举例:
无参情况
public abstract class Animal {
public abstract void run();
}
public class Dog extends Animal{
@Override
public void run() {
System.out.println("Dog running");
}
}
@Override是方法重写的校验注解,添加后必须完全满足方法重写的要求,不然就会报错!!!
有参情况
public abstract class Animal {
private String name;
protected abstract String getName(String name);
}
public class Dog extends Animal{
private String nickname = "nickname";
@Override
public String getName(String nickname) {
return nickname;
}
}
这里修改了父类和子类方法的修饰符,只有方法修饰符和方法体不同
当父类方法修饰符为private时,子类就不能重写父类的方法,因为private修饰符修饰的成员方法规定该方法只能在父类中使用,因此,抽象方法的方法修饰符不能是私有的!!!
方法重写只需记住:方法重写主要用于抽象方法,因为抽象方法没有方法体,方法体由子类重写,具体功能由子类决定。
本篇的下一篇是方法重载,在方法重载的最后简要总结了方法重写与方法重载的区别
方法重载