当前位置:首页 > Java

java如何分辨覆盖

2026-03-18 05:03:24Java

方法重写(Override)与重载(Overload)的区别

重写(Override)
发生在子类与父类之间,子类重新定义父类中已有的方法。要求方法名、参数列表、返回类型完全相同(协变返回类型除外),且访问权限不能比父类更严格。使用 @Override 注解可显式标记。

重载(Overload)
发生在同一类中,方法名相同但参数列表(类型、顺序、数量)不同。返回类型和访问修饰符可不同,与继承无关。

java如何分辨覆盖

覆盖的判定条件

  • 方法签名一致:方法名、参数类型及顺序必须完全相同。
  • 返回类型协变:子类方法的返回类型可以是父类方法返回类型的子类。
  • 访问权限不更严格:子类方法的访问修饰符不能比父类更严格(如父类为 protected,子类不能为 private)。
  • 异常限制:子类方法抛出的检查异常不能比父类更多或更宽泛。

示例代码

class Parent {
    protected void display() {
        System.out.println("Parent display");
    }
}

class Child extends Parent {
    @Override
    public void display() { // 正确覆盖:访问权限更宽松
        System.out.println("Child display");
    }

    // 以下不是覆盖,是重载
    public void display(String msg) {
        System.out.println("Overloaded: " + msg);
    }
}

常见误区

  • 静态方法(static)不能被覆盖,隐藏(hide)机制替代。
  • 私有方法(private)和 final 方法无法被覆盖。
  • 参数列表不同时,即使方法名相同也属于重载而非覆盖。

通过以上规则和示例可清晰分辨 Java 中的方法覆盖。

标签: java
分享给朋友:

相关文章

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java程序如何运行

java程序如何运行

编写Java代码 使用文本编辑器或IDE(如IntelliJ IDEA、Eclipse)编写Java源代码,保存为.java文件。例如: public class HelloWorld {…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…