一个java小题目

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:14:12
104. 已知:
11. public class Yikes {
12.
13. public static void go(Long n) {System.out.print("Long ");}
14. public static void go(Short n) {System.out.print("Short ");}
15. public static void go(int n) {System.out.print("int ");}
16. public static void main(String [] args) {
17. short y = 6;
18. long z = 7;
19. go(y);
20. go(z);
21. }
22. }
结果为何?
A. int Long
B. Short Long
C. 编译失败。
D. 执行阶段丢出异常。
Answer: A

为什么不是B呢?

简称多态。

同名函数不同参数,你传如不同参数,就执行相应的方法。
go(y) 就是 go(short)
go(z) 就是 go(long)
结果:
B

但是你的函数里
public static void go(Short n) {System.out.print("Short ");}
参数是Short 不是short, 所以short的参数自动传为整数int.

因为在程序执行过程中,short 型自动转换成int型。所以答案是A而不是B。