02.Java面向物件(思維導圖)
面向物件是Java的一個重要的概念(萬物皆物件),是不是很抽象?
@--圖片來源於網路----------------------------------------------------------------------------------
學習面向物件前先了解下Java中方法的定義及使用
方法的主要功能是封裝可以執行的一段程式碼, 這樣不僅可以進行重複呼叫, 更
可以方便地實現程式碼的維護, 而本次使用的方法定義語法如下:
public static 返回值型別 方法名稱(引數型別 引數變數,...){ 方法體(本方法要執行的若干操作); 【return [返回值];】 }
在方法的定義格式中, 發現其有一個返問值型別, 指的是這個方法的返問結果。對於此返問值的類
型可以有以下兩種:
1.直接設定.Java中的資料型別(基本資料型別、引用資料型別), 如果方法設定了返問值, 那麼必
須使用return 語句返回與資料型別對應的資料;
2.方法沒有返回值void,可以不使用return返回內容,但是可以使用return結束方法呼叫。
在Java中定義方法的要求很多,
而在本次所給出的方法定義格式有一個使用限制:“定義在主類中,並且由主方法直接
呼叫。”
範例:定義一個沒有引數沒有返問值的方法。
public class TestDemo{ public static void main(String[] args){ printInfo();//直接呼叫方法printInfo() } public static void printInfo(){//定義沒有引數,沒有返回值的方法 System.out.println("**************"); } }
本程式首先在TestDemo主類中定義了一個printlnfo()方法,此方法主要是進行內容的輸出,所以
在方法宣告返問值時使用了void,然後在主方法之中呼叫了兩次printlnfo()方法;
範例:定義一個有引數無返問值的方法。
public class TestMethod{ public static void main(Stirng args[]){ get(10.0); get(-10.0); } //定義沒有引數,沒有返回值的方法 public static void get(double money){ if (money>0.0) { //現在已經給錢 System.out.println("可以進行支付!"); }else{ //沒錢 System.out.println("你窮瘋了,沒錢還買什麼東西!"); } } }
本程式定義了一個pay()方法, 而後在此方法中定義了一個引數, 並在方法中針對傳入的內容進行判
斷後輸出。
範例:定義有返回值有引數的方法。
public class TestMethod1{
public static void main(String args[]){
//方法的返回值可以進行接收
int result = add(10,20);
System.out.println("計算結果:"+result);
//也可以直接將方法返回值進行輸出
System.out.println(add(50,60));
}
public static int add(int x,int y){
return x+y;
}
}
如果此時方法有返問值宣告,那麼必須返回相應型別的資料;
如果沒有返問值宣告, 則可以直接編寫return。而此類操作一般都會結合分支判斷一起使用。
範例:利用return結束方法呼叫。
public class TestMethod2{
piblic static void main(String args[]){
set(100);
set(3);
set(10);
}
public static void set(int x){
if(x=3){
return; //方法後面的內容不執行了
}
System.out.println("x="+x);
}
}//只有在方法返回值型別為void的前提下才可以使用
方法的過載
方法的過載是指方法名稱相同, 引數的型別或個數不同, 呼叫的時候將會按照
傳遞的引數型別和個數完成不同方法體的執行。
範例 :觀察方法過載。
//方法過載
public class TestMethod3{
public static void main(String args[]){
//方法過載之後執行時會根據傳入引數的型別或個數的不同調用不同的方法體
System.out.println("兩個整形引數:"+add(10,20));//1號方法
System.out.println("三個整形引數:"+add(10,20,30));//2號方法
System.out.println("兩個浮點型引數:"+add(10.2,20.3));//3號方法
}
//add()方法一共被過載三次
public static int add(int x,int y){//1號方法
return x+y;
}
//此時與之前的add()方法的引數個數不一樣
public static int add(int x,int y,int z){//2號方法
return x+y+z;
}
//此時與之前的add()方法的引數型別不一樣
public static double add(double x,double y){//3號方法
return x+y;
}
}
//在進行方法過載的時候一定要考慮到引數型別的統一,雖然可以實現過載方法返回不同型別的操作
//標準的開發來講,建議所有的過載後的方法使用同一種返回值型別;
//方法過載的時候重點是根據引數型別及個數來區分不同的方法,而不是依靠返回值的不同來確定的。
方法過載的概念本身很容易理解,但是對於方法過載有以下兩點說明。
• 在進行方法過載時一定要考慮到引數型別的統一,雖然可以實現過載方法返回不同型別的操作,
但是從標準的開發來講,建議所有過載後的方法使用同一種返回值型別;
• 方法過載的時候重點是根據引數型別及個數來區分不同的方法,而不是依靠返回值的不同來確
定的。
方法的遞迴呼叫
遞迴呼叫是一種特殊的呼叫形式, 指的是方法自己呼叫自己的形式;
在進行遞迴操作時必須滿足以下兩個條件。
• 必須有結束條件;
• 每次呼叫時都需要改變傳遞的引數。
範例:遞迴呼叫。
//方法的遞迴呼叫
public class TestMethod4
{
public static void main(String args[]){
System.out.println(sum(100)); //1-100累加
System.out.println(sum(200)); //1-200累加
}
public static int sum(int num){ //最大的內容
if (num==1)
{ //遞迴的結果呼叫
return 1; //最終的結果返回了一個1
}
return num+sum(num-1);//遞迴呼叫
}
}
本程式的操作流程簡單分析如下。
• 第l 次呼叫:return 100 + sum(99);
• 第2次呼叫:return 100 + 99 + sum(98);
• 倒數第2次呼叫:return 100 + 99 + ... + 3 + sum(2);
• 最後一次呼叫:return 100 + 99 + ... + 3 + 2 + 1。