HAIHAIHEI 发表于 2022-3-31 23:03

Java学习第十六天

第十六天,有不对之处麻烦各位指正
方法重载机制:
/*
        方法重载机制:
        1.先判断以下代码风格存在什么缺点
        第一个:代码可读性差(次要)
        第二个:程序员需要记忆更多的方法名称
*/
public class 方法重载机制{
//主方法
        public static void main(String[] args){
        int x=sumInt(10,20);
        System.out.println(x);
       
        long y=sumLong(10L,20L);
        System.out.println(y);
       
        double z=sumDouble(10.0,20.0);
        System.out.println(z);
        }

//定义一个计算int类型数据的求和方法
public static int sumInt(int a,int b){
        return a+b;
}

//定义一个计算long类型数据的求和方法
public static long sumLong(long a,long b){
        return a+b;
}

//定义一个计算double类型数据的求和方法
public static double sumDouble(double a,double b){
        return a+b;
}
}

/*
使用方法重载机制解决上述两个问题
1.代码整齐美观
2.功能相似的可以让“方法名相同”,更易于之后的代码编写
在Java语言中进行方法区分:
        首先Java编译器会通过方法名区分
        但是Java中允许方法名相同的情况出现
        如果方法名相同的情况下,编译器会通过方法的参数类型进行方法的区分
*/
class test{
        public static void main(String[] args){
                //对于程序员来说,只需要记住一个方法名即可
        System.out.println(sum(10,20));
        System.out.println(sum(10L,20L));
        System.out.println(sum(10.0,20.0));
        }

//定义一个计算int类型数据的求和方法
public static int sum(int a,int b){
        System.out.println("int求和");
        return a+b;
}

//定义一个计算long类型数据的求和方法
public static long sum(long a,long b){
        System.out.println("long求和");
        return a+b;
}

//定义一个计算double类型数据的求和方法
public static double sum(double a,double b){
        System.out.println("double求和");
        return a+b;
}

}


什么时候使用方法重载:
/*
        方法重载(overland):
        什么时候使用方法重载机制:
        在同一个类当中,如果“功能1”和“功能2”他们功能是相似的,那么可以考虑将它们方法名一致,这样代码既美观又便于后期的代码编写(容易记忆,方便使用)
       
        注意:方法重载机制不能随便使用,如果两个功能压根不相干,不相似,根本没关系,此时两个方法使用方法重载机制的话,会导致编码更麻烦。无法进行方法功能的区分

        什么时候代码会发生方法重载?
        条件一:在同一个类当中
        条件二:方法名相同
        条件三:参数列表不同(参数的个数不同;参数的类型不同;参数的顺序不同,都算不同)

        只要同时满足以上三个条件,我们可以认定方法和方法之间发生了重载机制

注意:
        不管代码怎么写,最终一定能让Java编译器很好的区分开这两个方法

        方法重载和返回值类型无关
        方法重载和修饰符列表无关
*/
public class 使用方法重载{
        public static void main(String[] args){
        m1();
        m1(100);
        m2(10,3.14);
        m2(3.14,110);
        m3(10);
        m3(10.0);
        }
       
        public static void m1(){
        System.out.println("m1无参数的执行");
        }
        //这个方法的参数个数和上面方法的参数个数不同
        public static void m1(int a){
        System.out.println("m1有一个int参数的执行");
        }

        public static void m2(int x,double y){
        System.out.println("m2(int x,double y)");
        }

        //参数的顺序不同,也算不同
        public static void m2(double x,int y){
        System.out.println("m2(double x,int y)");
        }

        public static void m3(int x){
        System.out.println("m3(int x)");
        }
        //参数的类型不同,也算不同
        public static void m3(double x){
        System.out.println("m3(double x)");
        }

        //分析:以下两个方法有没有发生重载
        //编译器报错了,这不是重载,这是重复
        /*
        public static void m4(int a){
        }
        public static void m4(int x){
        }
        */

        //这两个方法是否发生重载
        //这不是重载,这是方法重复了
        /*
        public static int m5(){
        return 1;
        }
        public static double m5(){
        return 1.0;
        }
        */

        //这两个方法是否发生重载
        //这个方法没有修饰符列表
        //这不是重载,这是方法重复了
        /*
        void m6(){
        }
        //这个有修饰符列表       
        public static void m6(){
        }
        */
}

class test{
        //不在同一个类当中,不能叫做方法重载
        public static void m1(int x,int y){       
       
        }
}

HAIHAIHEI 发表于 2022-3-31 23:06

纯手打,如果有不对之处希望各位大佬指出,感激不尽{:1_893:}(注:昨天电脑重装后有点问题,拿去找人修理了下,今天开始继续,昨天的会找机会补上)

aonima 发表于 2022-3-31 23:12

加油,面向对象学习初期有些概念不容易理解

Badelyn 发表于 2022-3-31 23:14

总结的很好,继续加油

wangming5787 发表于 2022-3-31 23:58

楼主加油!!坚持就是胜利

Frank123456 发表于 2022-4-1 01:15

一起学习

zhuguang123 发表于 2022-4-1 02:11

楼主加油,Java刚开始很枯燥,要坚持

pglzxhyhc 发表于 2022-4-1 11:00

努力学习

马西瓜 发表于 2022-4-1 12:26

联系方式多少一起学习一下
页: [1]
查看完整版本: Java学习第十六天