• 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(){}
    */
    
  • 相关阅读:
    Hibernate面试题
    HBuilder开发移动App——manifest.json文件解析
    HTML5+ App开发入门
    Hbuilder开发移动App(1)
    Spring源码 之环境搭建
    java 反射机制
    【LeetCode】Divide Two Integers
    【LeetCode】4Sum
    Java ArrayList、Vector和LinkedList等的差别与用法(转)
    关于Python元祖,列表,字典,集合的比较
  • 原文地址:https://www.cnblogs.com/superfly123/p/10442411.html
Copyright © 2020-2023  润新知