在Java中,访问修饰符用于限制类、字段、方法等的访问范围。Java提供了四种访问修饰符,分别是 public(本类,同包,非同包子类,其他)
、protected(本类,同包,非同包子类)
、default(本类,同包)
和 private(本类)
。
方法重写的规则:
- 子类中的方法必须与父类中被重写的方法有相同的方法名称、参数列表,返回类型与父类相同或父类返回类型的子类。
- 重写方法不能比父类方法拥有更严格的访问修饰符。例如,如果父类方法是
public
,子类中的重写方法不能是protected
或private
。 - 重写方法后,优先调用子类重写后的类型。
- 重写方法调用父类的方法,通常使用
super
关键字。// 父类 class Animal { public void makeSound() { System.out.println("Animal makes a sound"); } } // 子类 class Dog extends Animal { // 子类重写了父类的makeSound方法 @Override public void makeSound() { System.out.println("Dog barks"); super.makeSound(); // 调用父类的makeSound方法 } } // 另一个子类 class Cat extends Animal { // 子类重写了父类的makeSound方法 @Override public void makeSound() { System.out.println("Cat meows"); // 不调用父类的makeSound方法 } } // 测试 public class TestOverride { public static void main(String[] args) { Animal animal1 = new Dog(); animal1.makeSound(); // 调用的是Dog类中重写的makeSound方法 Animal animal2 = new Cat(); animal2.makeSound(); // 调用的是Cat类中重写的makeSound方法 } }