永发信息网

JAVA 方法重载的问题,最好写上为什么

答案:7  悬赏:70  手机版
解决时间 2021-05-11 02:27
  • 提问者网友:遁入空寂
  • 2021-05-10 19:20

a(int x){ }
a(int y){ } 算重载吗?

a(int x){ }
a(double x){ } 算重载吗?

a(int x,double y){ }
a(double x, int y){ } 算重载吗?

最佳答案
  • 五星知识达人网友:患得患失的劫
  • 2021-05-10 19:46

a(int x){ }
a(int y){ } 算重载吗?


不算,因为参数类型是一样的。 你调用这个方法的时候,传参数1,和参数2进去,都是调用的这个方法。



a(int x){ }
a(double x){ } 算重载吗?


这个算,原因同上。 你传1,和传1.0d 是调用的不同方法



a(int x,double y){ }
a(double x, int y){ } 算重载吗?


这个算, 你传1,1.0d 和传1.0d,1 分别调用不同的方法, 所以是重载。



总结。方法重载是方法名一样, 传入参数类型不同,返回值类型不同。


比如:


int a(){}


double a(){}


这个就是返回值类型不同的重载。



针对你的问题,我发现你主要是不明白


a(int x){ }
a(int y){ } 是不是重载,你一定要理解,是传入参数的类型不同。如果我调用这个方法的时候是:a(1){}


a(2){} 你能明白要调用的是哪个方法吗, 你都不能,电脑更不能分辨了。 事实上,你在用工具开发的时候,估计都不能让你这么定义方法, 系统会认为你这是两个重名的方法,直接就报红了。


全部回答
  • 1楼网友:时间的尘埃
  • 2021-05-10 23:33

a(int x){ } a(int y){ } 算重载吗?

不算重载(overload),如果这两个方法同时写在一个类里面会报错

,如果这两个方法在继承关系中出现叫override,就是对其进行覆盖

a(int x){ } a(double x){ } 算重载吗?

这个算重载,但是尽量避免此类运用,因为在传值时候数值会被自动进行类型转换,如果不明确标示类型会导致方法调运混乱,《java编程思想》中讨论过这个问题

a(int x,double y){ } a(double x, int y){ } 算重载吗?

这个和上一个性质一样。

  • 2楼网友:摆渡翁
  • 2021-05-10 23:10
Wind的理解恰好是反了,后面两位是正解 对这,支持
  • 3楼网友:西风乍起
  • 2021-05-10 22:52
Wind的理解恰好是反了,后面两位是正解
  • 4楼网友:思契十里
  • 2021-05-10 22:44

a(int x){ } a(int y){ } 算重载吗?

不算 只能算是方法的重写

a(int x){ } a(double x){ } 算重载吗?

算 参数类型不同

a(int x,double y){ } a(double x, int y){ } 算重载吗?

算 类型顺序不同!

  • 5楼网友:躲不过心动
  • 2021-05-10 21:54

a(int x){ } a(int y){ } 算重载吗?

算重载,入参类型和顺序一致

a(int x){ } a(double x){ } 算重载吗?

不算重载,入参类型不一致

a(int x,double y){ } a(double x, int y){ } 算重载吗?

不算重载,虽然都是double和int的入参,但是两个类型的入参顺序不同

  • 6楼网友:从此江山别
  • 2021-05-10 21:02

a(int x){ }

a(int y){ } 算重载吗?

上面这两个其实是一个方法,只是参数的名字不同罢了。

a(int x){ }

a(double x){ } 算重载吗?

这个算重载。

a(int x,double y){ }

a(double x, int y){ } 算重载吗?

这个也算。

是否重载的关键点在于,

1.参数个数是否相同,

2.相同位置上的参数类型是否相同(有继承关系 或 基本类型与其包装器类型 在此视为等同)

只要上面两个有一个不同,则同名的两个方法就被称为重载方法。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯