• JAVA总结之方法重载


    问题描述:

      方法重载(overload)是一种Java语法现象,指在一个类内部出现了多个方法名相同,但是参数列表(参数的类型,个数,顺序)不同的方法。Java的方法重载调用会更具参数类型有自动识别调用那个方法。方法重载,可以增强代码的可维护性,为使用者带来更方便。

      方法重载必须遵守两个规则:

        1.参数列表必须不同。

        2.返回值类型不受限制,可以不同。

      下面附上测试代码样例:

     1 package com.test;
     2 
     3 public class TestOverload {
     4 
     5     /**
     6      * @param args
     7      * 方法重载测试样例
     8      */
     9     public static void main(String[] args) {
    10         // TODO Auto-generated method stub
    11         double llp1 = llp(1,2);
    12         /*
    13          * 由于int会向下转型成double,所以不会报错。
    14          * 调用:double com.test.TestOverload.llp(double i, double j)
    15          */
    16         double llp2 = llp(1.0,2);
    17         double llp3 = llp(1.0,2.0);
    18         double atp1 = atp(1,2.0);
    19         double atp2 = atp(1.0,2);
    20         /*
    21          * double atp3 = atp(1.0,2.0);
    22          * 由于没有atp(double,double)的方法,所以这里会报错
    23          * The method atp(double, int) in the type TestOverload is not applicable for the arguments (double, double)
    24          */
    25         /*
    26          * double atp3 = atp(1,2);
    27          * int会自动向上转型成double,但是由于重载方法有atp(int,double)和atp(double,int),
    28          * 导致这方法不知道怎么转,模棱两可的,所以报错
    29          * The method atp(int, double) is ambiguous for the type TestOverload
    30          */
    31     }
    32     
    33     public static double llp(int i, int j){
    34         System.out.println("调用:llp(int i, int j)");
    35         return 1.0;
    36     }
    37     public static double llp(double i, double j){
    38         
    39         System.out.println("调用:llp(double i, double j)");
    40         return 1.0;
    41     }
    42     /*
    43      * 这里只有放回类型不同,不满足重载条件,报错
    44      * Duplicate method llp(int, int) in type TestOverload
    45      * public static double llp(int i, int j){}
    46      */
    47     public static double atp(int a, double b){
    48         System.out.println("调用:atp(int a, double b)");
    49         return 1.0;
    50     }
    51     public static double atp(double a, int b){
    52         System.out.println("调用:atp(double a, int b)");
    53         return 1.0;
    54     }
    55 }

    控制台输出数据:

    调用:llp(int i, int j)
    调用:llp(double i, double j)
    调用:llp(double i, double j)
    调用:atp(int a, double b)
    调用:atp(double a, int b)
  • 相关阅读:
    linux /mac 下 go环境变量配置
    idea常用快捷键
    《Redis开发与运维》读书笔记
    【Zookeeper】windows环境下zookeeper安装
    【Linux命令】top命令
    【Linux命令】grep命令
    【Linux命令】ps命令
    【Java并发编程】23、ConcurrentHashMap原理分析(1.7和1.8版本对比)
    【Java深入研究】10、红黑树
    《大型网站技术架构 核心原理与案例分析》读书笔记
  • 原文地址:https://www.cnblogs.com/atp-sir/p/6380943.html
Copyright © 2020-2023  润新知