在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)方法