在Java中,方法重写是指在子类中重新定义父类中已经定义的方法。以下是Java方法重写的基本原则:
- 子类中的重写方法必须具有相同的方法签名(即相同的方法名、参数类型和返回类型)。
- 子类中的重写方法不能比父类中的原方法具有更低的访问权限。例如,如果父类方法是public,那么子类方法也必须是public或者protected。
- 子类方法不能比父类方法抛出更多或者更广泛的异常,但可以抛出更少或者更具体的异常。
- 子类方法不能比父类方法具有更少的重载版本。
当子类中的方法与父类中的方法具有相同的方法签名时,子类对象调用该方法时,会优先调用子类中的重写方法。
以下示例展示了方法重写的使用:
class Animal {public void makeSound() {System.out.println("Animal makes sound");}
}class Cat extends Animal {@Overridepublic void makeSound() {System.out.println("Cat meows");}
}public class Main {public static void main(String[] args) {Animal animal = new Animal();animal.makeSound(); // Output: Animal makes soundCat cat = new Cat();cat.makeSound(); // Output: Cat meows}
}
在上面的示例中,Animal类中定义了一个makeSound()方法,而Cat类继承自Animal类并重写了makeSound()方法。当Animal对象调用makeSound()方法时,输出为"Animal makes sound",而当Cat对象调用makeSound()方法时,输出为"Cat meows"。