📜  Java方法覆写(1)

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

Java方法覆写

在面向对象编程中,方法覆写是一个重要的概念。方法覆写指的是在子类中重新定义父类的方法,以实现子类更具体的功能需求。本文将介绍Java中的方法覆写相关知识点。

定义

Java中的方法覆写指的是在子类中重新定义一个与父类中具有相同名称、参数列表和返回类型的方法。这个子类方法会覆盖父类中的方法,并且在执行时会调用子类的方法。方法覆写的目的是让子类能够根据自己的具体需求实现一个新的方法。

以下是Java中方法覆写的基本语法:

class Animal {
    public void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

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

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();
        Animal myDog = new Dog();
        myAnimal.makeSound();
        myDog.makeSound();
    }
}

在上面的代码中,我们定义了两个类Animal和Dog,Dog是Animal的子类。在Animal类中定义了一个makeSound()方法,在Dog类中覆写了这个方法。我们可以看到在main方法中,即使myDog是Animal类型的变量,但是在调用makeSound()方法时会执行Dog类中的方法。

覆写规则

Java中的方法覆写必须遵守一定的规则,否则编译器会报错或产生运行时错误。以下是Java中方法覆写的规则:

  • 方法名、参数列表和返回类型必须与父类中定义的方法一致,否则编译器会报错。
  • 覆写的方法不能拥有比父类更严格的访问修饰符,比如父类中定义的方法是public的,那么子类中覆写的方法也不能是protected或private的。
  • 返回类型必须相同或是返回类型的子类。
  • 如果父类中定义的方法抛出了异常,子类中覆写的方法最多只能抛出父类中抛出的相同异常或其子类异常,不能抛出新的异常。
  • 子类中的覆写方法不能使用父类方法中定义的final关键字修饰符,因为final方法不能被覆写。
super关键字

在子类中覆写方法时,可以使用super关键字调用父类中被覆写的方法。super关键字可以用于访问父类中的属性或方法。

以下是使用super关键字调用父类方法的示例:

class Animal {
    public void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        super.makeSound();
        System.out.println("The dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();
        Animal myDog = new Dog();
        myDog.makeSound();
    }
}

在上面的代码中,我们在Dog类中使用super.makeSound()调用了父类Animal中的makeSound()方法。运行上述代码时,输出如下:

The animal makes a sound
The dog barks
总结

Java中的方法覆写是面向对象编程中的一个重要概念,它可以让子类根据自己的具体需求实现一个新的方法。在覆写方法时,必须遵守一定的规则,并且可以使用super关键字调用父类中的方法。掌握方法覆写的技巧可以让我们更好地设计和开发Java程序。