面向對象(上)
- 1. 類的結構之二:方法
-
- 1.1 關鍵字:return
- 1.2 方法的重載
- 1.3 可變個數形參的方法
- 1.4 Java的值傳遞機制
- 1.5 遞歸方法
1. 類的結構之二:方法
1.1 關鍵字:return
- 使用範圍:使用在方法體中
-
作用:
① 結束方法
② 針對于傳回值類型的方法,使用"
資料"方法傳回所要的資料。return
- 注意點:
關鍵字後面不可以聲明執行語句。return
1.2 方法的重載
定義:在同一個類中,允許存在一個以上的同名方法,隻要它們的參數個數或者參數類型不同即可。
總結:“兩同一不同”
- 同一個類、相同方法名
- 參數清單不同:參數個數不同,參數類型不同
構成重載的舉例:
public class OverLoadTest {
public static void main(String[] args) {
OverLoadTest test = new OverLoadTest();
test.getSum(1,2);
}
//如下的4個方法構成了重載
public void getSum(int i,int j){
System.out.println("1");
}
public void getSum(double d1,double d2){
System.out.println("2");
}
public void getSum(String s ,int i){
System.out.println("3");
}
public void getSum(int i,String s){
System.out.println("4");
}
//如下的3個方法不能與上述4個方法構成重載
// public int getSum(int i,int j){
// return 0;
// }
// public void getSum(int m,int n){
//
// }
// private void getSum(int i,int j){
//
// }
}
如何判斷是否構成方法的重載?
- 嚴格按照定義判斷:兩同一不同。
- 跟方法的權限修飾符、傳回值類型、形參變量名、方法體都沒關系。
1.3 可變個數形參的方法
jdk 5.0新增的内容,具體使用:
- 可變個數形參的格式:
資料類型 ... 變量名
- 當調用可變個數形參的方法時,傳入的參數個數可以是:0個,1個,2個,……
- 可變個數形參的方法與本類中方法名相同,形參不同的方法之間構成重載
- 可變個數形參的方法與本類中方法名相同,形參類型也相同的數組之間不構成重載。換句話說,二者不能共存。
- 可變個數形參在方法的形參中,必須聲明在末尾
- 可變個數形參在方法的形參中,最多隻能聲明一個可變形參。
public class MethodArgsTest {
public static void main(String[] args) {
MethodArgsTest test = new MethodArgsTest();
test.show(12); //test: 12
test.show("hello");//show(String)
test.show("hello","world");
//show(String ... strs)
//hello
//world
test.show();
//show(String ... strs)
test.show(new String[]{"AA","BB","CC"});
//show(String ... strs)
//AA
//BB
//CC
}
public void show(int i){
System.out.println("test: "+i);
}
public void show(String s){
System.out.println("show(String)");
}
public void show(String ... strs){
System.out.println("show(String ... strs)");
for(int i = 0;i < strs.length;i++){
System.out.println(strs[i]);
}
}
//不能與上一個方法同時存在
// public void show(String[] strs){
//
// }
//The variable argument type String of the method
//show must be the last parameter
// public void show(String ...strs,int i){
//
// }
}
1.4 Java的值傳遞機制
規則:
- 如果變量是基本資料類型,此時指派的是變量所儲存的資料值。
- 如果變量是引用資料類型,此時指派的是變量所儲存的資料的位址值。
舉例:
public class ValueTransferTest {
public static void main(String[] args) {
System.out.println("***********基本資料類型:****************");
int m = 10;
int n = m;
System.out.println("m = " + m + ", n = " + n);
n = 20;
System.out.println("m = " + m + ", n = " + n);
System.out.println("***********引用資料類型:****************");
Order o1 = new Order();
o1.orderId = 1001;
Order o2 = o1;//指派以後,o1和o2的位址值相同,都指向了堆空間中同一個對象實體。
System.out.println("o1.orderId = " + o1.orderId + ",o2.orderId = " +o2.orderId);
o2.orderId = 1002;
System.out.println("o1.orderId = " + o1.orderId + ",o2.orderId = " +o2.orderId);
}
}
class Order{
int orderId;
}
針對于方法的參數概念:
- 形參:方法定義時,聲明的小括号内的參數
- 實參:方法調用時,實際傳遞給形參的資料
典型例題與記憶體解析:
- 案例1
- 案例2
1.5 遞歸方法
遞歸方法:一個方法體内調用它自身。遞歸一定要向已知方向遞歸,否則這種遞歸就變成了無窮遞歸,類似于死循環。
**例:**計算1-n之間所自然數的乘積:
n!
public int getSum(int n) {
if (n == 1) {
return 1;
} else {
return n * getSum1(n - 1);
}
}