程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA基礎培訓(10),方法的Overload介紹

JAVA基礎培訓(10),方法的Overload介紹

編輯:關於JAVA

今天在項目裡做事,中午休息時間,補上這個教程吧。這次我們看看Overload 的內容 。

測試代碼

package lession10;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* 老紫竹JAVA基礎培訓(10),方法的Overload介紹.<br>
* 匹配方式為最特殊匹配,或者叫最准確匹配<br>
* 如果發現多個都有相同的匹配度,則編譯報錯。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class Lession10 {
 public void test1(byte id) {
  System.out.println("test1(byte);");
 }
 public void test1(short id) {
  System.out.println("test1(short);");
 }
 public void test1(int id) {
  System.out.println("test1(int);");
 }
 public void test1(long id) {
  System.out.println("test1(long);");
 }
 public void test1(float id) {
  System.out.println("test1(float);");
 }
 public void test1(double id) {
  System.out.println("test1(double);");
 }
 public void test2(Object o) {
  System.out.println("test2(Object);");
 }
 public void test2(String o) {
  System.out.println("test2(String);");
 }
 public void test2(Integer o) {
  System.out.println("test2(Integer);");
 }
 public void test2(List o) {
  System.out.println("test2(List);");
 }
 public void test2(ArrayList o) {
  System.out.println("test2(ArrayList);");
 }
 public void test3(int a, float b) {
  System.out.println("test3(int,float);");
 }
 public void test3(long a, double b) {
  System.out.println("test3(long,double);");
 }
 public static void main(String[] args) {
  Lession10 o = new Lession10();
  o.test1(1); // 整數默認為 int
  o.test1((byte) 1); // 強制調用 byte
  o.test1((short) 1); // 強制調用 short
  o.test1(1L); // long
  o.test1(1.0); // 小數默認為 double
  o.test1(1.0F); // 強制調用float
  //
  o.test2(new Object()); // 對象類型
  o.test2("String"); // 字符串比對象更准確
  o.test2(new Integer(3)); // 整數對象
  o.test2(3); // JDK 5及以上
  o.test2(new LinkedList()); // 調用更匹配的List
  o.test2(new ArrayList()); // 調用 ArrayList
  //
  // 強制轉換測試
  o.test2((Object) new ArrayList()); // 以強制後的類型進行屁屁額
  o.test2((List) new ArrayList());// 以強制後的類型進行屁屁額
  // 多參數測試
  o.test3(1, 2);
  o.test3(1L, 3);
  o.test3(1, 3D); // 自動升級優先,int可以自動升級到long,float可以自動升級到 double
  //
  // o.test2(null); // 不能確定匹配度的測試
 }
}

寫一下運行結果大家參考

test1(int);
test1(byte);
test1(short);
test1(long);
test1(double);
test1(float);
test2(Object);
test2(String);
test2(Integer);
test2(String);
test2(List);
test2(ArrayList);
test2(Object);
test2(List);
test3(int,float);
test3(long,double);
test3(long,double);

測試:

1 其中最後一個帶有注釋,大家可以去掉注釋看看編譯效果,熟悉一些這個錯誤。

2 數字是最容易混淆的,大家可以用各種數字混合看看, 整數可以轉化為對應精度的 浮點數

3 增加更多的參數類型,一般不超過5個,測試各種組合的系統匹配情況,加深印象。

總結:

1 以最貼切,最准確的匹配進行調用

2 如果沒有完全匹配的,則進行允許的不丟失精度的類型轉換,int可以升級為 long,float可以升級為double, 整數可以升級為浮點數

3 如果還沒有匹配的,則報錯

4 如果發現有多個匹配的,無法確定到底是哪一個,則編譯報錯

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved