`

Java中重载(Overload)与重写(Override)

    博客分类:
  • Java
阅读更多
1. 重载(Overload)

重载(Overload)是在一个类里面,方法名字相同,而参数不同。

返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。

1. 被重载的方法必须改变参数列表(参数个数或类型不一样);
2. 被重载的方法可以改变返回类型;
3. 被重载的方法可以改变访问修饰符;
4. 被重载的方法可以声明新的或更广的检查异常;
5. 方法能够在同一个类中或者在一个子类中被重载;
6. 无法以返回值类型作为重载函数的区分标准;

public class OverloadTest{
    public int add(int a ,int b){
        return a + b;
    }
    public int add(int a, int b, int c){
        System.out.println(add(a, b));
        return a + b + c;
    }
    public static void main(String[] args){
        OverloadTest test = new OverloadTest();
        int result = test.add(1, 2);
        int result2 = test.add(1, 2, 3);
        System.out.println(result);
        System.out.println(result2);
    }
}


2. 重写(Override)

重写(Override)是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。

重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法,当需要在子类中调用父类的被重写方法时要使用super关键字。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。

1. 参数列表必须完全与被重写方法的相同;
2. 返回类型必须完全与被重写方法的返回类型相同;
3. 访问权限不能比父类中被重写的方法的访问权限更低;
4. 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常;
5. 声明为final的方法不能被重写;
6. 声明为static的方法不能被重写,但是能够被再次声明;
7. 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法;
8. 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法;
9. 父类的成员方法只能被它的子类重写;
10. 构造方法不能被重写;
11. 如果不能继承一个方法,则不能重写这个方法;

public class InheritenceTest3{
    public static void main(String[] args){
        Son son = new Son();
    }
}
class Grandpa{
    public Grandpa(){
        System.out.println("grandpa");
    }
}
class Father extends Grandpa{
    public Father(){
        System.out.println("father");
    }
}
class Son extends Father{
    public Son(){
        System.out.println("son");
    }
}


3. 对比(Override)

区别点重载Overload重写Override
类个数同一个类多个类(父类与子类)
参数列表必须修改一定不能修改
返回类型可以修改一定不能修改
异常可以修改可以减少或删除,一定不能抛出新的或者更广的异常
访问可以修改一定不能做更严格的限制(可以降低限制)


分享到:
评论

相关推荐

    Java 重写(Override)与重载(Overload).pdf

    根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...

    JAVA中的方法重写与方法重载区别

    JAVA中的方法重写与方法重载区别 JAVA 中的方法重写和方法重载是两个重要的概念,在面向对象程序设计语言中尤为重要。方法重写和方法重载都是多态性的体现,但它们之间有着本质的区别。 方法重写(Override)是指...

    Java重写(Override)&重载(Overload).pdf

    Java中的重写(Override)和重载(Overload)是面向对象编程中的两个核心概念,它们都是为了提高代码的灵活性和可复用性。 **重写(Override)** 是指子类能够重新定义父类中非私有(public或protected)的方法,以便在...

    重写(override)和重载(overload)的区别

    在C#编程语言中,重写(Override)和重载(Overload)是两种非常重要的概念,它们分别涉及对象多态性和方法的可选性。理解这两者的区别对于编写高效且易于维护的代码至关重要。 首先,让我们深入了解一下重写(Override)...

    java 重载(overload)与重写(override)详解及实例

    Java中的重载(Overload)和重写(Override)是两个重要的面向对象概念,它们都是实现多态的方式,但有着本质的区别。 **重载(Overload)** 重载发生在同一类或具有继承关系的类中,它允许创建多个同名方法,但这些方法...

    Java重写(Override)与重载(Overload)区别原理解析

    Java重写(Override)与重载(Overload)区别原理解析 Java 编程语言中有两个重要的概念:重写(Override)和重载(Overload)。这两个概念经常被混淆,但它们具有不同的作用和特点。本文将详细地介绍 Java 中的重写和...

    Java重写和重载概念及区别梳理

    在编程语言中,Java的重写(Override)和重载(Overload)是两个非常重要的概念,它们在类与对象的多态性中起到关键作用。理解并掌握这两个概念是成为一名合格的Java开发者的基础。 首先,我们来谈谈重写(Override...

    [Java]重载,重写以及继承,多态的区

    在Java编程语言中,重载、重写、继承与多态是四个非常核心的概念,它们在面向对象编程中扮演着至关重要的角色。接下来,我们将详细探讨这些概念,并通过实例加以说明。 ### 重载(Overload) 重载是指在同一个类中...

    java 重载,重写以及继承,多态的区别

    Java 中的重载、重写、继承和多态是四个不同的概念,它们之间存在一定的关系,但也存在明显的区别。 重载(Overload) 重载是指在同一个类中可以定义多个同名的方法,但这些方法的形参个数或类型必须不同。编译器...

    C#重写重载与多态

    在C#编程语言中,重写、重载和多态是面向对象编程的三大核心特性,它们对于构建灵活、可扩展的代码结构至关重要。 首先,我们来看“重写”。重写(Override)允许子类对从基类继承来的方法进行重新定义,以便提供...

    overload and override

    在面向对象编程中,尤其是在Java语言中,`Overload`(重载)和`Override`(重写)是两个非常重要的概念,它们帮助开发者更好地组织代码并提高代码的复用性和灵活性。 #### 二、Overload(重载) **定义**: - `...

    Override-Overload

    在面向对象编程中,方法重写(Override)和方法重载(Overload)是两个非常重要的概念。它们虽然都涉及到方法名称的重复使用,但是其本质含义、作用以及应用场景有着明显的区别。 #### 一、Override(方法重写) *...

    overload and override.txt的区别

    在面向对象编程中,`overload`(重载)与`override`(重写或覆盖)是两个重要的概念。它们虽然只有一字之差,但在实际应用中却有着本质的区别。 #### Overload(重载) 重载指的是在一个类中定义多个同名但参数...

    Java overload和override的区别分析

    Java中的方法重载(Overloading)和重写(Overriding)是两个重要的概念,它们都是实现多态性的方式,但有着本质的区别。 1. **方法重载(Overloading)**: 方法重载是指在同一个类中可以有多个同名方法,但这些方法的...

    浅谈Java中的重载,重写,多态,静态绑定、动态绑定

    Java 中的重载(Overload)是一种机制,允许在同一个类中定义多个具有相同名称的方法,这些方法的参数个数、参数类型和顺序不能相同。返回类型可以相同,也可以不同。例如,在上面的代码中,我们定义了两个构造方法 ...

    Java语言中的 覆盖重载和多态

    Java语言中的覆盖(Override)和重载(Overload)以及多态(Polymorphism)是面向对象编程的重要概念,它们是实现代码复用和灵活性的关键。 **多态性(Polymorphism)** 多态性是Java中一种允许一个接口有多种实现的方式。...

    重写和重载的区别

    ### 重写与重载的区别 #### 一、概述 在面向对象编程中,方法的重写(Overriding)和重载(Overloading)是非常重要的概念。这两种机制可以帮助程序员更灵活地管理和组织代码,提高代码的复用性和可扩展性。 ####...

    Java 重写与重载方法与区别详解

    Java中的方法重写(Override)和重载(Overload)是两种不同的概念,它们都是多态性的体现,但实现方式和目的各有不同。 **重写(Override)** 重写发生在继承关系中,当子类继承父类后,可以对父类中已有的非...

    PHP和JAVA中的重载(overload)和覆盖(override) 介绍

    重载(overload)与覆盖(override)是面向对象编程中的两个重要概念,它们在不同的编程语言中表现出来的特性略有不同,尤其在PHP和JAVA这两种广泛使用的语言中表现得尤为明显。 首先,重载(overload)是指在同一个类中...

    Java重写.docx

    Java中的重写(Override)和重载(Overload)是两个重要的概念,它们都是指方法的定义方式,但是它们之间存在着明显的区别。 方法的重载 在同一个类中,可以定义多个方法,它们的方法名相同,但是参数列表不同,...

Global site tag (gtag.js) - Google Analytics