当前位置:首页 > Java

java方法如何改写

2026-03-23 19:45:01Java

方法重写的基本概念

方法重写(Override)是面向对象编程中多态性的重要体现,允许子类重新定义父类中已有的方法。重写后的方法需满足以下条件:

  • 方法名、参数列表、返回类型必须与父类方法一致(返回类型在Java 5+支持协变类型)。
  • 访问修饰符不能比父类更严格(如父类为protected,子类可为public,但不能为private)。
  • 父类方法若被finalstatic修饰,则不能被重写。

重写与重载的区别

  • 重写(Override):子类对父类方法的重新实现,要求方法签名完全一致。
  • 重载(Overload):同一类中方法名相同但参数列表不同,与继承无关。

实际代码示例

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

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog barks"); // 重写父类方法
    }
}

子类Dog重写了AnimalmakeSound()方法,调用时将执行子类逻辑。

使用@Override注解

添加@Override注解可显式声明方法为重写,编译器会检查是否符合重写规则,避免拼写错误或签名不匹配的问题。

动态绑定机制

Java通过动态绑定(运行时多态)决定调用哪个方法。例如:

Animal myDog = new Dog();
myDog.makeSound(); // 输出 "Dog barks",实际调用子类方法

访问父类被重写的方法

通过super关键字可调用父类方法:

class Dog extends Animal {
    @Override
    public void makeSound() {
        super.makeSound(); // 先调用父类方法
        System.out.println("Dog barks");
    }
}

协变返回类型

Java 5+支持返回类型为子类类型:

class Animal {
    public Animal getInstance() { return new Animal(); }
}

class Dog extends Animal {
    @Override
    public Dog getInstance() { return new Dog(); } // 返回类型为Dog
}

异常处理规则

  • 重写方法不能抛出比父类方法更宽泛的受检异常(如父类抛出IOException,子类不能抛出Exception)。
  • 非受检异常(RuntimeException)无此限制。

静态方法不能被重写

若父类方法为static,子类同名方法实际为隐藏(Hide),而非重写。调用时取决于引用类型:

java方法如何改写

class Parent {
    static void show() { System.out.println("Parent"); }
}

class Child extends Parent {
    static void show() { System.out.println("Child"); }
}

Parent obj = new Child();
obj.show(); // 输出 "Parent",因为静态方法绑定到类而非实例

标签: 方法java
分享给朋友:

相关文章

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java如何入门

java如何入门

学习基础语法 从Java的基础语法开始,包括变量、数据类型、运算符、控制结构(if-else、for循环、while循环)等。可以通过官方文档或入门教程学习。 安装开发环境 下载并安装JDK(J…

win7如何配置java环境变量

win7如何配置java环境变量

下载并安装Java 从Oracle官网下载适合的Java Development Kit (JDK)安装包,选择与系统位数(32位或64位)匹配的版本。运行安装程序,按照提示完成安装,默认路径通常为C…

java实现vue接口

java实现vue接口

Java 实现 Vue 接口的方法 在 Java 中实现 Vue 前端调用的接口,通常需要使用 Spring Boot 框架构建 RESTful API。以下是具体的实现步骤和代码示例。 创建 Sp…