方法重载的学习

public class InterfaceS {
	/**
	 * 总的来说在调用m()时看参数被声明为什么类型,看是否有匹配的,如果有匹配的,则直接调用,不管参数实际是什么类型
	 * 如果没有直接匹配的,则看是否有父类可以调用,如果有多个,则困惑,因为无法确定返回的到底是什么类型
	 * 方法的调用与方法出现的位置无关;
	 * 
	 */
	public static void main(String[] args) {
		n(m(getc()));

	}
	/**
	 * 
	 * @return 如果限制了返回为I1,则调用m(I1),即使它的代码位置偏后
	 * 如果返回为I,即使则调用m(I),不管实际返回的是什么
	 */
	private static  I getc() {
		return new C();
	}
	static void m(I2 i) {
		System.out.println("m2");
	}
	/**
	 * 如果没有该方法,main方法调用m(new C())时会报错
	 * @param i
	 */
	static Integer m(I i) {
		System.out.println("m");
		return 1;
	}
	static void m(I1 i) {
		System.out.println("m1");
	}
	static void n(int o){
		System.out.println("n-int");
	}
	/**
	 * 当传入Integer时优先调用该方法而不是上面一个
	 * @param o
	 */
	static void n(Object o){
		System.out.println("n-obj");
	}

}

interface I {

}

interface I1 extends I {

}

interface I2 extends I {

}

class C  implements I1, I2 {

}

class C1 implements I1 {

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值