在Java中,重写(Override)是指在子类中重新定义一个与父类中具有相同名称、参数列表和返回类型的方法。通过重写,子类可以根据自己的需求修改或扩展父类的方法实现。
重写方法的规则如下:
子类中的重写方法必须具有与父类中被重写方法相同的名称、参数列表和返回类型。
子类中的重写方法不能比父类中被重写方法拥有更低的访问控制权限。例如,如果父类中的方法是public,那么子类中的方法就不能是private。
子类中的重写方法不能抛出比父类中被重写方法更多的异常,但可以抛出相同的异常或者不抛出异常。
子类中的重写方法不能使用比父类中被重写方法更窄的返回类型,但可以使用相同或更宽的返回类型。这被称为协变返回类型。
以下是一个使用重写的简单示例
在上面的示例中,Animal类拥有一个makeSound()方法,而Cat类通过重写该方法,修改了makeSound()方法的行为。当调用makeSound()方法时,如果是Animal对象,则输出"Animal makes a sound";如果是Cat对象,则输出"Cat meows",这个就是重写的效果。