• Java方法重载(Method Overloading)小记


    方法重载概念

    如果在同一个类中,两个或多个方法的参数不同(参数数量不同、参数类型不同或两者都不同),并且它们具有相同的名称,这些方法称为重载方法,这一特性称为方法重载(Method Overloading)。

    要点说明

    1. 要在同一个类中 (在不同的类中不算
    2. 要有两个或多个方法 (只有一个方法也构不成方法重载
    3. 方法名称相同 (方法名称不同的也不算
    4. 参数不同 (包括参数数量不同或者是参数类型不同,也可以两个都不同

    举个例子

    class MethodDemo {
        void func() { ... }
        void func(int a) { ... }
        float func(double a) { ... }
        float func(int a, float b) { ... }
        int func(float a) { ... }
        int func(int a, int b, int c, int d) { ... }
    }
    

    在这个例子中,func()是重载方法,这些方法具有相同的名称,但具有不同的参数。

    强调一点

    方法重载与返回值类型没有关系,虽然在上面例子中这方法返回值类型有floatint,但是方法重载与返回值类型没有任何关联。
    方法重载可能具有相同或不同的返回类型,但它们的()里参数必须不同。

    错误案例

    // 错误案例1
    class MethodDemo {
        void func(int a) { ... }
        int func(int a) { ... }
    }
    // 错误原因:重载与返回值类型无关
    
    // 错误案例2
    class MethodDog {
        void func(int a) { ... }
    }
    
    class MethodCat {
        int func(double a) { ... }
    }
    // 错误原因:不在同一个类中
    

    通常情况下,这错误案例1这返回值类型是最容易让人出错的地方,你可以站在计算机的角度来辨别这是不是重载方法。

    比如以最上面那个正确例子中,
    我这边要是拿到一个func(2.6)的方法,根据参数类型,显然他走的是float func(double a) { ... }这个方法;
    我这边如果拿到一个func(8)的方法,根据参数类型,显然他走的是func(int a) { ... }这个方法;
    我这边再拿到一个func(100, 78.5f),根据参数个数,显然他走的是float func(int a, float b) { ... }这个方法;

    在错误案例1中,
    我这边如果是拿到一个func(666)的方法,从参数类型和参数个数来判断,我无法判断出他应该走哪个方法,因此这个就不是方法重载。

  • 相关阅读:
    535. Encode and Decode TinyURL 长短URL
    190. Reverse Bits 二进制相反数
    476. Number Complement 二进制中的相反对应数
    598. Range Addition II 矩阵的范围叠加
    507. Perfect Number 因数求和
    asp.net core 系列之用户认证(1)-给项目添加 Identity
    asp.net core 系列之用户认证(authentication)
    asp.net core 系列之webapi集成Dapper的简单操作教程
    asp.net core 系列之webapi集成EFCore的简单操作教程
    asp.net core 系列之中间件基础篇(middleware)
  • 原文地址:https://www.cnblogs.com/Subaru/p/14410272.html
Copyright © 2020-2023  润新知