📜  在子类的继承中使用方法覆盖的Java程序(1)

📅  最后修改于: 2023-12-03 15:37:41.661000             🧑  作者: Mango

在子类的继承中使用方法覆盖的Java程序

在Java中,子类可以继承父类的所有方法和属性。但有时子类需要对父类中的方法进行修改或者扩展,这就需要用到方法覆盖(或者叫方法重写)。方法覆盖是指子类重新定义了一个与父类中同名的方法,该方法具有与父类中同名方法相同的参数列表和返回类型。

方法覆盖的规则

当子类覆盖父类的方法时,必须遵循以下规则:

  • 方法名必须与父类中被覆盖的方法名相同。
  • 参数列表必须与父类中被覆盖的方法的参数列表完全相同。
  • 返回类型必须与父类中被覆盖的方法的返回类型相同或是其子类(如果返回类型是基本数据类型,则必须相同)。
  • 访问权限不能比父类中被覆盖的方法访问权限更低。例如,如果父类中的方法是public,则子类中覆盖的方法也必须是public。
一个使用方法覆盖的例子

下面是一个使用方法覆盖的例子。我们定义了一个父类Animal和一个子类Dog。Animal中有一个move方法,Dog中对其进行了覆盖。

class Animal {
    public void move(){
        System.out.println("The animal is moving.");
    }
}

class Dog extends Animal {
    @Override
    public void move(){
        System.out.println("The dog is running.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Dog dog = new Dog();

        animal.move();
        dog.move();
    }
}

上面的代码输出:

The animal is moving.
The dog is running.
@Override注解

在子类覆盖父类的方法时,可以使用@Override注解来标识该方法是覆盖父类的方法。使用该注解可以让编译器在编译时检查是否符合覆盖规则,并提供警告信息。

class Animal {
    public void move(){
        System.out.println("The animal is moving.");
    }
}

class Dog extends Animal {
    @Override
    public void move(){
        System.out.println("The dog is running.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Dog dog = new Dog();

        animal.move();
        dog.move();
    }
}

上面的代码输出:

The animal is moving.
The dog is running.
总结

方法覆盖是Java中常用的一个面向对象的特性。通过覆盖父类的方法,子类可以修改或扩展其行为,从而更好地满足自己的需求。记住覆盖的规则,使用@Override注解可以让代码更加健壮和易读。