package chap5_6;
public class Bird {
public void fly(){
System.out.println("我在天空自由自在地飞翔");
}
}
package chap5_6;
public class Ostrich extends Bird {
@Override
public void fly() {
// TODO Auto-generated method stub
//super.fly();
System.out.println("我只能在地上奔跑");
}
public static void main(String[] args)
{
Ostrich os=new Ostrich();
os.fly();
}
}
运行结果
我只能在地上奔跑
这种子类包含与父类同名方法的现象被称为方法重写(Override)
两同两小一大原则:
两小指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等,一大指的是子类方法的访问权限应比父类方法的访问权限更大或相等。
如果需要在子类方法中调用父类中被覆盖的方法,则可以使用super或者父类类名作为调用者来调用父类中被覆盖的方法。
如果父类方法具有private访问权限,则该方法对其子类是隐藏的。
Override和Overload
重载主要发生在同一个类的多个同名方法之间,而重写发生在子类和父类的同名方法之间。