iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
自我挑戰組

30天Java由淺入深系列 第 13

Day 13 : 多載與範圍

  • 分享至 

  • xImage
  •  

介紹

今天分享兩個在物件導向程式中都非常重要的概念。一個是多載(Overloading)和寫程式都要注意到的範圍(Scope)。

  • 多載 : 簡單來說,就是在同一個類別(class)中,設定相同名稱的函數,但其傳入的引數與定義的參數類型皆不同。
  • 範圍 : 因為Java是使用編譯器(後因為跨平台需求也有使用直譯器),意即會將程式碼先編譯後再執行,所以變數與函數設定的範圍位置就顯得很重要。

此部分多介紹一個與多載名字類似,但不太相同的概念--「覆寫」(Overriding)。
主要的操作方法是寫一個繼承(extends)於主類別的子類別,所有的內容變數皆不做任何改變,唯一不同的部分在於回傳值會被子類別新的回傳值覆寫掉。


多載(Overloading)

static int plus(int num1,int num2){       //different type & parameters
		return num1 + num2 ;
}
static float plus(float num3,float num4){
		return num3 + num4;
}
  • 兩個具有相同名稱的函數,我們發現其回傳值與定義參數類型皆不同。這就稱為多載。
static int gradecalu(int Agrade,int Bgrade){
	return Agrade + Bgrade;
}

static int gradecalu(float Cgrade,float Dgrade){
	int total = (int)(Cgrade + Dgrade)
	return total;
}

public class void main(String[] args){
	int ab,cd;
	ab = gradecalu(98,23);     //ab = 121
	cd = gradecalu(65.4,72.3);     //cd = 138(四捨五入)
  System.out.println(ab);
	System.out.println(cd);
}
  • 程式解析 : 我們可以觀察,為甚麼編譯器知道當我們呼叫相同名稱的函數時,能正確引用 ?
    →因為我們傳遞不同的引數進去,Java會知道根據參數的類別呼叫到其對應之函數。

範圍(Scope)

  • 在一個區域或函數區塊內才能使用的變數,我們會說是這個變數的範圍。
import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		/*
			此處不能使用x
		*/
		Scanner input = new Scanner(System.in);
		int x = 0;
		/*
			此處x為0
		*/
		x = input.nextInt();
		/*
			經過鍵入數字x得到新數值
		*/
	}
}

下面介紹區塊程式碼的Scope :

public class Main {
  public static void main(String[] args) {

      // 此處不能使用num

    { // 區塊開頭

      // 此處num尚未宣告

      int num = 9281155;

      // 此處可以使用num
      System.out.println(num);

   } // 區塊結束

     // 因為位於區塊外,超出num範圍,不可以使用。

  }
}

以上內容若有錯誤,煩請不吝嗇告知,謝謝您!!!/images/emoticon/emoticon82.gif


上一篇
Day 12 : 引數與參數
下一篇
Day 14 : 遞迴與停機問題
系列文
30天Java由淺入深30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言