[Java] 4.5. 多載

方法的多載,讓你的多個方法擁有相同的名字確有不同的參數。

 

image/svg+xml4.5 多載 - Overloading class Person { String id; String name; int age; void show () { System.out.println( " 我的⾝份證字號是 " + id); System.out.println( " 姓名是 " +name); System.out.println( " 年齡是 " +age); } void show ( boolean brief ) { if (brief){ System.out.println( " 我的姓名是 " +name); } else { System.out.println( " 我的⾝份證字號是 " + id); System.out.println( " 姓名是 " +name); System.out.println( " 年齡是 " +age); } } void show ( boolean sID , boolean sName , boolean sAge ) { if (sID) System.out.println( " 我的⾝份證字號是 " + id); if (sName) System.out.println( " 我的姓名是 " +name); if (sAge) System.out.println( " 我的年齡是 " +age); } } class Main{ public static void main( String [] args){ Person p = new Person (); p.id = "k123456789" ; p.name = "Jack" ; p.age = 20 ; p . show (); p . show ( true ); p . show ( true , false , true ); } } class Person { String id; String name; int age; void show ( boolean brief) { if (brief){ System.out.println( " 我的姓名是 " +name); } else { System.out.println( " 我的⾝份證字號是 " + id); System.out.println( " 姓名是 " +name); System.out.println( " 年齡是 " +age); } } void show ( String b) { if (b == " 英⽂ " ){ System.out.println( "My ID is" +id); System.out.println( "My name is" +name); System.out.println( "I am " +age + "years ago" ); } else { System.out.println( " 我的⾝份證字號是 " + id); System.out.println( " 姓名是 " +name); System.out.println( " 年齡是 " +age); } } } class Person { String id; String name; int age; String writeMemoir ( boolean brief1 ) { return null ; } Memoir writeMemoir ( boolean brief2 ) { return null ; } } 執⾏結果 Person.java:12: error: method writeMemoir(boolean) is already defined in class Person Memoir writeMemoir(boolean brief2) { ^ 1 error 4. ⼜⼀個叫作 show() ⽅法,這次是3個參數的版本。這些⽅法雖然擁有 相同的名稱,但因為參數的不同(個數上不同)因此可以同時存在。 J4_5_1 – Main.java show() show (boolean sID, boolean sName , boolean sAge) show(boolean brief) 這些擁有不同參數的⾃我介紹⽅法,皆因參數 有不同功能,難到不能同時存在嗎? J4_5_1 – Person.java 1. 這是⼈員類別( Person )。 2. ⼀個叫作 show() 的⽅法(⾃我介紹)。 . 另⼀個叫作 show() ⽅法,只是多了⼀個參數。 不論是 void show() 或是 void show(boolean brief) 或是 void show(boolean sID, boolean sName, boolean sAge) 都有⼀個共通 的特點,就是擁有相同的⽅法名稱,但確有不同的參數。這種情況即稱為多 載。 J4_5_2 – Person.java 1. 建立⼈員物件( Person )。 2. 使⽤沒參數的⾃我介紹⽅法 “void show()” 3. 給定 1 個參數,則選⽤帶有 1 個參數的⾃我介紹⽅法, 其⽅法格式為 “void show(boolean brief)” 4. 給定 3 個參數,此時會選⽤的⾃我介紹⽅法為 “void show(boolean sID, boolean sName, boolean sAge)” 1. 這是⼈員類別( Person )。 2. 這兩個多載函式最只有差在參數型別上的不同。 雖然只有如此微⼩的差異,但還是可以進⾏多載。 J4_5_3 – Person.java 1. 這是⼈員類別( Person )。 2. 只有回傳值是不同 的,是不可進⾏多載的。 3. 另外,若只有參數名稱的 不同,也不⾜以進⾏多載。 多載,讓不同版本的⾃我介紹同時存在 參數值,是選⽤⾃我介紹⽅法的條件 不同的參數型別,也是可以進⾏多載 有時想要完整版的⾃我介紹,但有時⼜想要精簡版的⾃我介 紹,⿂與熊掌不可兼得嗎?! 注意, 不可依回傳值型別或參數名稱進⾏多載 1 1

留言