Java | 重载与重写的区别

91 阅读2分钟

一、重载的定义

  • 重载发生在同一个类中,是指有多个同名方法,但它们的参数列表不同(参数数量、参数类型或参数顺序不同)。
  • 编译器根据方法签名(方法名和参数列表)来决定调用哪个方法。

demo:

public class OverloadingExample {
    // 重载方法1
    public void display(String message) {
        System.out.println("String参数: " + message);
    }
    // 重载方法2
    public void display(int number) {
        System.out.println("int参数: " + number);
    }
    // 重载方法3
    public void display(String message, int number) {
        System.out.println("String和int参数: " + message + ", " + number);
    }
    public static void main(String[] args) {
        OverloadingExample example = new OverloadingExample();
        example.display("Hello");        // 输出:String参数: Hello
        example.display(123);            // 输出:int参数: 123
        example.display("Hello", 123);   // 输出:String和int参数: Hello, 123
    }
}

二、重写的定义

重写发生在继承关系中,子类定义了一个与父类方法签名完全相同的方法。子类通过重写父类的方法来提供具体的实现,以适应子类的特定行为。

demo:

class ParentClass {
    public void show() {
        System.out.println("父类的方法");
    }
}
class ChildClass extends ParentClass {
    // 重写父类的方法
    @Override
    public void show() {
        System.out.println("子类重写的方法");
    }
}
public class OverridingExample {
    public static void main(String[] args) {
        ParentClass obj1 = new ParentClass();
        obj1.show();  // 输出:父类的方法
        ChildClass obj2 = new ChildClass();
        obj2.show();  // 输出:子类重写的方法
    }
}

三、重载与重写的区别

  1. 发生位置:重载发生在同一个类中,而重写发生在继承关系的不同类之间。
  2. 方法签名:重载的方法必须有不同的参数列表,而重写的方法必须与父类中的方法有相同的方法签名。
  3. 返回类型:重写的方法可以有相同的返回类型或者子类返回类型,而重载的方法可以有相同的或不同的返回类型。
  4. 访问权限:重写的方法不能有比父类方法更严格的访问权限。
  5. 异常抛出:重写的方法不能抛出比父类方法更宽泛的检查型异常。
    以上就是本次分享的所有内容,感兴趣的朋友点个关注呀,感谢大家啦~

以上就是本次分享的所有内容,感兴趣的朋友点个关注呀,感谢大家啦~