Java方法的多載
多載就是在一個類中,有相同的函式(方法)名稱,但形參不同的函式(方法),
方法的多載的規則:
- 方法名必須相同
- 引數串列必須不同(個數不同、型別不同、引數排列順序不同等),
- 方法的回傳型別可以相同也可以不同
- 僅僅回傳型別不同不足以成為方法的多載
實作理論:
- 方法名稱相同時,編譯器會根據呼叫方法的引數個數、引數型別等去逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯,
多載的意義:
- 是為了方便外界對方法進行呼叫,什么樣的引數程式都可以找到對應的方法來執行,體現的是程式的靈活性
如下代碼塊,max方法比較大小只能是兩個lnt型別相比較,那么我們如何讓max方法可以比較兩個double型別的數,甚至比較一個int型別的數,和一個double型別的數呢?這里就需要使用方法的多載,
package cn.test;
/*
* 本類用于測驗多載01
*/
public class TestHeavyLoad {
public static void main(String[] args) {
int max = max(15,35);
System.out.println(max);//35
}
//兩個int型別相比較
public static int max(int a,int b) {
if(a == b) {
System.out.println("兩值相等");
return 0;
}else if(a > b) {
return a;
}else {
return b;
}
}
}
實作效果如下(兩個數,不同型別):
package cn.test;
/*
* 本類用于測驗多載02
*/
public class TestHeavyLoad {
public static void main(String[] args) {
// int max = max(15,35);//35
// double max = max(15.5,35.5);//35.5
// double max = max(35,15.5);//35.0
double max = max(35.8,15);//35.8
System.out.println(max);
}
//兩個int型別相比較
public static int max(int a,int b) {
if(a == b) {
System.out.println("兩值相等");
return 0;
}else if(a > b) {
return a;
}else {
return b;
}
}
//兩個double型別相比較
public static double max(double a,double b) {
if(a == b) {
System.out.println("兩值相等");
return 0;
}else if(a > b) {
return a;
}else {
return b;
}
}
//第一個為int型別,第二個為double型別
public static double max(int a,double b) {
if(a == b) {
System.out.println("兩值相等");
return 0;
}else if(a > b) {
return a;
}else {
return b;
}
}
//第一個數為double型別,第二個數為int型別
public static double max(double a,int b) {
if(a == b) {
System.out.println("兩值相等");
return 0;
}else if(a > b) {
return a;
}else {
return b;
}
}
}
那么我想利用max方法實作三個數的比較,取最大值呢?實作效果如下:
package cn.test;
/*
* 本類用于測驗多載03
*/
public class TestHeavyLoad {
public static void main(String[] args) {
// int max = max(15,35);//35
int max = max(35,66,18);//66
System.out.println(max);
}
//兩個int型別相比較
public static int max(int a,int b) {
if(a == b) {
System.out.println("兩值相等");
return 0;
}else if(a > b) {
return a;
}else {
return b;
}
}
//比較三個數,取最大值
public static int max(int a,int b,int c) {
//定義一個result變數來接受最大值,區域變數要宣告初始值,
int result = 0;
result = a;
if(result == b) {
if(result == c) {
System.out.println("三個數都相等!");
return 0;
}else if(result > c) {
return result;
}else {
return c;
}
}else if(result > b) {
if(result > c) {
return result;
}else {
return c;
}
}else {
if(b > c) {
return b;
}else {
return c;
}
}
}
}
還有呢,就是我想用int型別來接受兩個double型別的數相比較呢?實作效果如下:
package cn.test;
/*
* 本類用于測驗多載04
*/
public class TestHeavyLoad {
public static void main(String[] args) {
// int max = max(15,35);//35
int max = max(18.6,32.3);//32
System.out.println(max);
}
//兩個int型別相比較
public static int max(int a,int b) {
if(a == b) {
System.out.println("兩值相等");
return 0;
}else if(a > b) {
return a;
}else {
return b;
}
}
//兩個double型別相比較,回傳值為int型別
public static int max(double a,double b) {
if(a == b) {
System.out.println("兩值相等");
return 0;
}else if(a > b) {
return (int)a;
}else {
return (int)b;
}
}
}
差不多就這些了,還有其他的一些想法啊,規范啊后面再更新補充,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/288827.html
標籤:Java
上一篇:Terraform入門教程,示例展示管理Docker和Kubernetes資源
下一篇:hive學習筆記之四:磁區表
