【发布时间】:2019-03-26 22:24:26
【问题描述】:
我正在阅读从 Java 开始,书中提出的一个挑战是:“编写一个具有三个重载静态方法的类,用于计算以下几何形状的面积:圆形、矩形和气缸。”圆的面积只需要一个参数,这里没有问题,所以我把那个方法省略了。但是矩形的面积和圆柱的面积都需要两个参数:
public class Area{
public static double area(double w, double l)
{
//Area of rectangle
return l*w;
}
public static double area(double r, double h)
{
//Area of a cylinder
return Math.PI * (r*r) *h;
}
}
使用上面的代码,我收到警告“duplicate method area(double, double) in type Area." 我知道,如果我只是更改其中一个参数的类型,我不会遇到这个问题,但这是唯一可以做到的方法吗?我可以'没有两个具有相同参数列表的重载静态方法?
【问题讨论】:
-
不,你不能拥有,如果你传递这样的值
area(2.0, 2.0)2 编译器应该推断出哪个方法?所以它不会成功。 -
不,您不能重载具有相同参数的方法。您可以创建
area(double w, double l)和area(float r, float h),但在使用这些方法传递正确的数据时必须非常细心/小心。 -
为什么投反对票?对我来说,这似乎是一个合理的问题。 练习 似乎有点人为(请参阅我的回答中关于命名的评论),但面对这个练习,这个问题看起来很合理。
标签: java static static-methods