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){
}
}
纯手打,如果有不对之处希望各位大佬指出,感激不尽{:1_893:}(注:昨天电脑重装后有点问题,拿去找人修理了下,今天开始继续,昨天的会找机会补上) 加油,面向对象学习初期有些概念不容易理解 总结的很好,继续加油 楼主加油!!坚持就是胜利 一起学习 楼主加油,Java刚开始很枯燥,要坚持 努力学习 联系方式多少一起学习一下
页:
[1]