zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    Using Resource File on DotNet
    C++/CLI VS CSharp
    JIT VS NGen
    [Tip: disable vc intellisense]VS2008 VC Intelisense issue
    UVa 10891 Game of Sum(经典博弈区间DP)
    UVa 10723 Cyborg Genes(LCS变种)
    UVa 607 Scheduling Lectures(简单DP)
    UVa 10401 Injured Queen Problem(简单DP)
    UVa 10313 Pay the Price(类似数字分解DP)
    UVa 10635 Prince and Princess(LCS N*logN)
  • 原文地址:https://www.cnblogs.com/atp-sir/p/6380943.html
Copyright © 2011-2022 走看看