【发布时间】:2016-08-11 18:07:13
【问题描述】:
对于我正在做的练习,我有三个方法,所有 isEven 都测试一个值并返回 true 或 false。一个 isEven 是一个实例方法,另外两个是静态方法,每个都有一个参数。如果我创建一个新的 testClass,并在 main 方法中运行方法,则实例 isEven 方法可以正常工作,但是当我尝试使用静态 isEven 方法时,我得到一个未找到符号的错误。但是,如果我在实际的应用程序类中创建 main 方法并在那里运行它,那么重载的方法将起作用。为什么会这样?静态方法不应该能够在另一个类中运行吗?使用的方法如下。
public class MyInteger {
private int value;
public boolean isEven() {
if(this.value % 2 == 0) {
System.out.println(value + " is an even number.");
return true;
}
else {
System.out.println(value + " is not an even number.");
return false;
}
}
public static boolean isEven(int value) {
if(value % 2 == 0) {
System.out.println(value + " is an even number.");
return true;
}
else {
System.out.println(value + " is not an even number.");
return false;
}
}
public static boolean isEven(MyInteger value) {
if(value.value % 2 == 0) {
System.out.println(value.value + " is an even number.");
return true;
}
else {
System.out.println(value.value + " is not an even number.");
return false;
}
}
}
class testMyInteger {
public static void main(String[] args) {
MyInteger val1 = new MyInteger(2);
int val = 2;
System.out.println("The value of this object is " + val1.getValu());
val1.isEven();
val1.isOdd();
val1.isPrime();
isEven(val1);
}
}
【问题讨论】:
-
正如提示:在 java 中重载静态方法没有意义,因为这是不可能的......
-
你能添加一个堆栈跟踪吗?
-
您应该向我们展示您的代码在不工作时的外观(将静态方法放在与主类不同的类中)。因为现在,您只是向我们展示了确实有效的代码,因此更难调试。
-
@ΦXocę웃Пepeúpaツ 你的意思是覆盖吗?因为在 Java 中重载静态方法绝对是可能的。
-
是的......覆盖......对不起
标签: java static instance overloading