Java中如何实现函数重写(Override)
在Java中,函数重写指的是子类重新定义了父类中已经实现的方法。子类可以在重写方法中实现不同的逻辑,以满足子类自己的需求。下面是Java中实现函数重写的步骤和一些关键点。
1. 子类必须继承自父类:函数重写只能在子类中进行,所以首先必须创建一个子类,且该子类必须继承自父类。
2. 子类方法的签名必须与父类方法一致:要实现重写,子类的方法签名(即方法名和参数列表)必须与父类方法完全一致。返回类型可以是父类方法的返回类型的子类。
3. 使用@Override注解(可选):可以在子类重写的方法前添加@Override注解,用于标识这是一个重写的方法,编译器会检查该方法是否符合重写的条件。
4. 子类方法的访问修饰符不得严格小于父类方法的访问修饰符:如果父类方法是public的,那么子类方法可以选择是public或protected;如果父类方法是protected的,那么子类方法可以选择是protected或是默认访问权限。
5. 子类方法不得抛出比父类方法更多或更宽泛的异常:如果父类方法抛出了某个异常,那么子类方法可以不抛出任何异常或抛出相同的异常或其子类异常。如果子类方法有抛出异常的需求,不能抛出比父类方法更多或更宽泛的异常。
下面是一个具体的例子来说明函数重写的使用:
class Animal {
public void move() {
System.out.println("Animal is moving");
}
}
class Dog extends Animal {
@Override
public void move() {
System.out.println("Dog is running");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.move(); // 输出:Animal is moving
Animal dog = new Dog();
dog.move(); // 输出:Dog is running
}
}
在上面的例子中,Animal类定义了一个名为move的方法,然后Dog类继承自Animal类并重写了move方法。在Main类的main方法中,首先创建了一个Animal对象animal,并调用了它的move方法,输出了"Animal is moving"。然后创建了一个Animal对象的引用dog,但实际上指向了一个Dog对象。当调用dog的move方法时,由于重写,所以实际调用的是Dog类的move方法,输出了"Dog is running"。
这就是Java中实现函数重写的方法和关键点。通过重写方法,可以在子类中实现特定的逻辑,以满足子类自身的需求。
