zoukankan      html  css  js  c++  java
  • 1-3方法的重载(overload)

    之前已经写了一个方法sumInt用来计算两个int类型数字的和,如果要是想计算两个float类型数字的和呢?ok,那就再来写一个sumFloat方法,除此之外,还有long类型,double类型,如果每种类型都要进行求和计算的话,就会像下面这种情况写4个方法了。

    public class MethodTest{
    
        public static void main(String[] args){
    
            System.out.println(sumInt(10,20));
    
            System.out.println(sumDouble(1.0,2.0));
    
            System.out.println(sumLong(10L,20L));
    
            System.out.println(sumFloat(1.0F,2.0F));
    
        }
    
        public static int sumInt(int a,int b){
    
            return a + b;
    
        }
    
        public static double sumDouble(double a,double b){
    
            return a + b;
    
        }
    
        public static long sumLong(long a,long b){
    
            return a + b;
    
        }
    
        public static float sumFloat(float a,float b){
    
            return a + b;
    
        }
    
    }
    

    方法重载(overload)

    上面程序有缺点,定义的4个方法,功能上都是计算两个数字的和,只不过传入的参数类型不同,调用者在调用的时候,需要记忆每个方法的名字,并且需要自己根据传入参数的类型来判断调用相应的方法,这样使用起来不是很方便,那为了使用方便,我们来改造一下上面的代码。

    public class MethodTest{
    
        public static void main(String[] args){
    
            System.out.println(sum(10,20));
    
            System.out.println(sum(1.0,2.0));
    
            System.out.println(sum(10L,20L));
    
            System.out.println(sum(1.0F,2.0F));
    
        }
    
        public static int sum(int a,int b){
    
            return a + b;
    
        }
    
        public static double sum(double a,double b){
    
            return a + b;
    
        }
    
        public static long sum(long a,long b){
    
            return a + b;
    
        }
    
        public static float sum(float a,float b){
    
            return a + b;
    
        }
    
    }
    

    上面将之前的代码里面的4个方法名全部改成一样的了,这种情况叫做方法重载(overload)。

    方法重载发生的条件

    发生在同一个类中.
    方法名相同
    参数列表不同(类型,个数,顺序)
    注意:

    方法重载和返回值类型无关
    方法重载和方法的修饰符列表无关。

    //参数的类型不同,构成重载
    public static void m1(int a){}
    public static void m1(double a){}
    
    //参数的个数不同,构成重载
    public static void m2(int a,int b){}
    public static void m2(int a){}
    
    //参数的顺序不同,构成重载,不过开发中不这样使用    
    public static void m3(int a,double b){}
    public static void m3(double a,int b){}
    
    //以下两个m4方法并没有构成重载.
    //两个方法完全一样,错误
    //public static void m4(int a){}
    //public static void m4(int b){}
    
    
    /*
    方法的重载和方法的返回值类型无关,不构成重载
    public static void m5(){}
    public static int m5(){
        return 100;
    }
    */
    
    
    /*
    方法的重载和方法的修饰符列表无关,不构成重载
    static void m6(){}
    public static void m6(){}
    */
    
  • 相关阅读:
    stone brook Introduction to Mathematical Statistics
    mongodb python
    CodesBay
    人机交互的本质是画图
    Latex模版–Review and Response Letters
    mongo with python
    OpenStack架构学习与解析
    Python类方法
    python装饰器
    java.sql.SQLException: Io 异常: Connection reset by peer: socket write error
  • 原文地址:https://www.cnblogs.com/superfly123/p/10442411.html
Copyright © 2011-2022 走看看