Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java重载和重写的区别和联系

作者:潮起潮落   发布日期:2025-07-04   浏览:65

// 示例代码:Java重载和重写的区别和联系

// 定义一个父类
class Parent {
    // 父类中的方法,可以被子类重写
    public void show() {
        System.out.println("Parent's show()");
    }

    // 父类中的方法,可以被重载
    public void display(int a) {
        System.out.println("Parent's display(int): " + a);
    }

    // 另一个重载版本的display方法
    public void display(String s) {
        System.out.println("Parent's display(String): " + s);
    }
}

// 定义一个子类,继承自Parent
class Child extends Parent {
    // 重写父类的show方法
    @Override
    public void show() {
        System.out.println("Child's show()");
    }

    // 重载父类的display方法
    public void display(int a, String s) {
        System.out.println("Child's display(int, String): " + a + ", " + s);
    }

    // 重载子类自己的display方法
    public void display(double d) {
        System.out.println("Child's display(double): " + d);
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建子类对象
        Child child = new Child();

        // 调用重写的方法
        child.show(); // 输出: Child's show()

        // 调用重载的方法
        child.display(10); // 输出: Parent's display(int): 10
        child.display("Hello"); // 输出: Parent's display(String): Hello
        child.display(10, "World"); // 输出: Child's display(int, String): 10, World
        child.display(3.14); // 输出: Child's display(double): 3.14
    }
}

解释说明:

  1. 重写(Override)

    • 子类可以通过@Override注解来重写父类的方法。重写方法的签名(方法名、参数列表)必须与父类中的方法完全一致。
    • 在上面的例子中,Child类重写了Parent类的show()方法。
  2. 重载(Overload)

    • 同一个类中可以定义多个同名但参数列表不同的方法,这称为方法重载。
    • 参数列表不同指的是参数的数量不同或参数类型的顺序不同。
    • 在上面的例子中,Parent类中有两个display方法,一个是接受int类型参数,另一个是接受String类型参数。Child类中又重载了display方法,增加了新的参数组合。
  3. 区别

    • 重写发生在父子类之间,子类可以改变父类方法的行为。
    • 重载发生在同一个类中,通过不同的参数列表来区分方法。
  4. 联系

    • 重写和重载都是多态性的体现,但它们的作用范围不同,重写是子类对父类方法的重新定义,而重载是在同一个类中提供多种实现方式。

上一篇:android java调jni之arraylist

下一篇:java 保留2位小数

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站