Java byte的一个有意思的现象

在java代码中,byte参数是给传递给int的,如果一个类的同名方法中既有如write(int i)又有一个write(byte b),那该调用哪个方法呢?

public interface IByte {

	public void write(int i);
}
public abstract class ByteParent {

	public void write(int i) {
		System.out.println("ByteParent.write方法:" + i);
	}
	
}
public class ByteChild extends ByteParent implements IByte{

	@Override
	public void write(int i) {
		System.out.println("int参数方法:" + i);
	}
	
	public void write(byte b) {
		System.out.println("byte参数方法:" + b);
		
	}

}

ByteChild 继承了抽象类,实现了一个接口,用多态生成不同的ByteChild 实例,看看如何调用

public class TestByte {

	public static void main(String[] args) {
		byte b = 11;		
		IByte iByte = new ByteChild();
		ByteParent byteParent = new ByteChild();
		ByteChild byteChild = new ByteChild();
		System.out.println("调用iByte.write方法输入单个byte,类型:" + iByte.getClass());
		iByte.write(b);

		System.out.println("调用byteParent.write方法输入单个byte,类型:" + byteParent.getClass());
		byteParent.write(b);
		
		System.out.println("调用byteChild.write方法输入单个byte,类型:" + byteChild.getClass());
		byteChild.write(b);
	}

}

看看输出结果:

可以看到实例使用不同的类型,调用的方法也不同,如果是抽象类与接口,都会调用write(int i) ,但如果使用实现类自己的类型,就调用write(byte b)方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值