標籤:java 方法簽名
方法的名字和參數列表成為方法的簽名。注意,方法簽名不包括方法的傳回型別。本文通過測試理解參數列表的真正含義,以及在繼承中重寫方法時方法的返回值與父類中方法的返回值應該有怎樣的關係。
這裡有三個輔助類:
package methodsign;public class Ancestor {}
package methodsign;public class Parent extends Ancestor {}
package methodsign;public class Other {}
下面是測試類別,測試結果在注釋中說明:
package methodsign;/** * 測試方法簽名 * 方法的名字和參數列表稱為方法的簽名 * @author yuncong * */public class Person {private String name;private String gender;private int age;public Person() {// TODO Auto-generated constructor stub}/** * 由構造器1和構造器2不可同時存在可知,方法簽名的參數列表具體是指參數的類型列表; * 由構造器1和構造器3可以同時存在可知,方法簽名的參數類型列表還與參數類型的順序有關,也就是說, * 即使方法括弧中的參數個數和類型完全一樣,只要參數類型的順序不同,也是不同的參數類型列表 */// 構造器1public Person(String name, String gender, int age) {super();this.name = name;this.gender = gender;this.age = age;}// 構造器2public Person(String gender, String name, int age) {super();this.name = name;this.gender = gender;this.age = age;}// 構造器3public Person(String name, int age, String gender) {super();this.name = name;this.age = age;this.gender = gender;}public Ancestor getAncestor() {return new Ancestor();}}
package methodsign;public class Student extends Person {/** * 方法1是正確的,方法2是錯誤的,說明在子類中重寫父類的方法,方法的傳回值 * 必須與父類中該方法的傳回值一樣或者是父類中該方法傳回值的子類 */// 方法1public Parent getAncestor() {return new Parent();}// 方法2public Other getAncestor() {return new Other();}}
Java 方法簽名