c语言编程笔录

首页 >   > 笔记大全

笔记大全

如果还有一次机会 重写override便是你的出路

更新时间:2023-06-27

前言

重写(override)是面向对象编程中的一个重要概念,它允许子类重新定义父类中已经定义的方法。当需要在子类中修改或增加某个特定方法的行为时,可以使用重写来实现。本文将深入探讨重写的概念,并使用示例代码来说明其用途和规范。

1. 重写的基本概念

在面向对象编程中,重写是指在子类中重新定义父类中已经定义的方法。子类中的重写方法必须具有相同的名称、参数列表和返回类型。通过重写,子类可以修改或替换父类中的方法实现,以达到满足子类特有需求的目的。

示例代码如下:
class Animal {
  public void makeSound() {
    System.out.println("动物发出声音");
  }
}

class Cat extends Animal {
  // 重写父类方法
  public void makeSound() {
    System.out.println("猫发出喵喵声");
  }
}

public class Main {
  public static void main(String[] args) {
    Animal myAnimal = new Animal(); // 创建动物对象
    Animal myCat = new Cat(); // 创建猫对象

    myAnimal.makeSound(); // 输出:"动物发出声音"
    myCat.makeSound(); // 输出:"猫发出喵喵声"
  }
}

2. 重写的用途

重写在面向对象编程中起到了至关重要的作用。它允许子类根据自身的需求来修改继承自父类的方法实现,从而实现更具体、更专用的功能。以下是重写的主要用途:

1)修改继承方法的行为:子类可以通过重写方法来更改父类方法的行为,使其适应子类特有的需求。例如,父类中的方法可能是通用实现,而子类可以根据具体情况对其进行定制。

2)扩展方法的功能:子类可以重写父类中的方法,并在重写方法中调用父类方法,继续执行一部分父类方法的逻辑。这样可以在不改变原有功能的基础上,增加额外的逻辑。

3. 重写的规范

为了正确地进行方法重写,以下是一些重要的规范和注意事项:

1)方法签名必须相同:子类中重写的方法必须与父类方法具有相同的方法名、参数列表和返回类型。否则,编译器会将其视为新的方法,而不是重写。

2)访问修饰符不能更严格:子类中重写的方法的访问修饰符不能比父类方法更严格。例如,如果父类方法是公共的(public),那么子类方法可以是公共的或受保护的(protected),但不能是私有的(private)。

3)抛出的异常不能更广泛:子类中重写的方法声明的异常不能比父类方法声明的异常更广泛。如果父类方法声明的异常是受检查异常,那么子类方法的异常也必须是相同的或其子类。

4. 总结

重写是面向对象编程中的一个重要概念,允许子类重新定义父类中已经定义的方法。通过重写,子类可以修改或替换父类中的方法实现,以满足子类特有需求。重写时需要遵循一定的规范和注意事项,以确保正确地实现重写。通过合理地应用重写,可以提高代码的可读性、可维护性和扩展性。