Java重载系列随笔一:重载认定

使用重载,需要:签名,也就是方法名相同,但是参数类型||或参数个数||参数顺序至少一个不同
而返回值类型是随便的。
 原因:
 JVM识别方法不同是通过方法的签名和参数,而不是签名、参数和返回值。
 因此,判断是否重载的关键是参数,包括参数的类型和参数的个数、顺序。

/**
 * 研究overload重载是是否包括返回类型的重载
 * 此为测试类和子类
 * 结论:使用重载,需要:签名,也就是方法名相同,但是参数类型||或参数个数||参数顺序至少一个不同
 * 而返回值类型是随便的。
 * 如果只是返回值不同,而参数类型和参数个数、顺序和前方法相同,则会报错:
 * The return type is incompatible with OverloadClass.getOverloadClass(String)
 * 翻译:xxx.xxx方法返回类型不匹配(被编译环境认定是重写,自动更正会让其和前方法的类型一致。
 * 导致问题的理论原因:
 * 系统判断不同方法是通过方法的签名和参数,而不是签名、参数和返回值。
 * 因此,判断是否重载的关键是参数,包括参数的类型和参数的个数、顺序。
 *
 */
public class OverloadClassTest extends OverloadClass {

	
	public OverloadClassTest getOverloadClass(String myName) {
		OverloadClassTest object = (OverloadClassTest) new OverloadClass();
		return object;
	}
	
	/**
	 * 下面是重载本类中方法,报错为:
	 * Duplicate method aaa() in type OverloadClassTest
	 */
	public void aaa() {};
	public String aaa() {
		return "string aaa()";
	}
	
	//参数顺序不同也是被认定不同方法
	public void aaa(String name, int count) {
		
	}
	public void aaa(int count, String name) {
		
	}
}
//父类
class OverloadClass {


	public void getOverloadClass(String myName) {
		System.out.println("overloadclass getOverloadClass()");
		new OverloadClass();
	}
}

 

posted @ 2022-04-10 19:08  曦灰  阅读(60)  评论(0)    收藏  举报