Java 方法签名
2015-06-05 10:17
447 查看
方法的名字和参数列表成为方法的签名。注意,方法签名不包括方法的返回类型。本文通过测试理解参数列表的真正含义,以及在继承中重写方法时方法的返回值与父类中方法的返回值应该有怎样的关系。
这里有三个辅助类:
package methodsign;
public class Ancestor {
}
下面是测试类,测试结果在注释中说明:
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可以同时存在可知,方法签名的参数类型列表还与参数类型的顺序有关,也就是说,
* 即使方法括号中的参数个数和类型完全一样,只要参数类型的顺序不同,也是不同的参数类型列表
*/
// 构造器1
public Person(String name, String gender, int age) {
super();
this.name = name;
this.gender = gender;
this.age = age;
}
// 构造器2
public Person(String gender, String name, int age) {
super();
this.name = name;
this.gender = gender;
this.age = age;
}
// 构造器3
public 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是错误的,说明在子类中重写父类的方法,方法的返回值
* 必须与父类中该方法的返回值一样或者是父类中该方法返回值的子类
*/
// 方法1
public Parent getAncestor() {
return new Parent();
}
// 方法2
public Other getAncestor() {
return new Other();
}
}
这里有三个辅助类:
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可以同时存在可知,方法签名的参数类型列表还与参数类型的顺序有关,也就是说,
* 即使方法括号中的参数个数和类型完全一样,只要参数类型的顺序不同,也是不同的参数类型列表
*/
// 构造器1
public Person(String name, String gender, int age) {
super();
this.name = name;
this.gender = gender;
this.age = age;
}
// 构造器2
public Person(String gender, String name, int age) {
super();
this.name = name;
this.gender = gender;
this.age = age;
}
// 构造器3
public 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是错误的,说明在子类中重写父类的方法,方法的返回值
* 必须与父类中该方法的返回值一样或者是父类中该方法返回值的子类
*/
// 方法1
public Parent getAncestor() {
return new Parent();
}
// 方法2
public Other getAncestor() {
return new Other();
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统